algorithm - 哪种排序和唯一顺序更快?
问题描述
例如在朱莉娅
julia> sort(unique([1,2,3,2,1]))
3-element Array{Int64,1}:
1
2
3
julia> unique(sort([1,2,3,2,1]))
3-element Array{Int64,1}:
1
2
3
哪个订单更快?为什么?
解决方案
根据文档,Julia 使用QuickSort作为数字输入的默认值。这是一个n log n
操作。
Unique 在时间和空间上都具有 O(n) 的复杂性。
现在,考虑 10000 个数字的小输入。
案例 1: 假设其中只有 1000 个是唯一的。
假设您运行,sort(unique(arr))
那么您基本上只会对 1000 个数字进行排序,unique(sort(arr))
而您将在其中对 10000 个数字进行排序。
案例 2: 假设所有 10000 个都是唯一的。现在,两者之间的性能没有显着变化,因为排序函数采用了所有 10000 个值。
所以,这完全取决于输入。但是使用它是有意义的sort(unique(arr))
。
推荐阅读
- rest-assured - 如果在一段时间后没有收到响应,如何终止 Rest Assured 连接
- python - ImportError: libhdf5.so.101: cannot open shared object file: No such file or directory,
- windows - 我应该怎么做才能在 Git 上解决这个问题?
- regex - 使用 AWK 跨非连续行匹配字符串
- css - 如何解决关于图像上的文本的问题
- java - 在运行时定期从属性文件中读取属性
- titanium - Titanium ellipsize 属性不适用于 iOS 中的 Label
- python - Python数学模块运算符优先级不正确?
- javascript - 根据子 div 更改固定背景
- reactjs - React 函数在 Map 函数内的 if 条件中输入两次