|
|
1
17
在运行算法之前,我只需要创建一个桶数组,每组65536个连续值对应一个桶。存储桶将包含其内容的最小值和最大值,但不会存储内容本身。运行该算法后,对桶进行一次遍历。如果有两个连续的非空铲斗,最小(bucket2)-最大(bucket1)<65536,把它们合起来。在算法完成运行之前,不会进行合并。丢弃所有空桶。该算法是线性时间的。 注意到 Bucket Sort . |
|
|
2
17
您不太可能用Perl编写一个比Perl的内置算法性能更好的排序算法
您可以使用sort pragma进行实验,以查看特定算法是否更好:
由于切割点会因数据分布的不同而有所不同,因此我认为您需要先对整个列表进行排序,然后在其上循环进行切割。
|
|
|
3
12
我会使用基数排序,因为需要对输出进行分组。 |
|
|
4
5
我只是想说基数排序, http://en.wikipedia.org/wiki/Radix_sort 然而,这可能比您希望实现的要高一点,Introsort通常是公认的数据排序解决方案 http://en.wikipedia.org/wiki/Introsort ,它是quicksort的一种变体,当它到达较小的集合时会切换到heapsort,因为它在较小集合上比quicksort更快。 |
|
|
5
1
|
|
6
0
在伪代码中:
如果提前知道范围,则可以减少索引值(例如,值-30000以使其进入正确的范围)。 |
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |