问题标签 [smoothsort]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
12251 浏览

java - 如何在最快的时间内对几乎排序的数组进行排序?(爪哇)

我有一个值数组,几乎但不是完全排序,有一些值被替换(例如,100000 中有 50 个)。如何最有效地排序?(性能在这里绝对至关重要,应该比 O(N) 快得多)。

我知道smoothsort,但我找不到Java 实现。有谁知道它是否已经实施?或者我可以用什么来代替smoothsort?

0 投票
3 回答
9135 浏览

algorithm - 为什么平滑排序不更常见?

从维基百科上阅读这篇关于排序算法的文章,smoothsort 似乎是最好的排序算法。它在所有类别中都具有最佳性能:最佳、平均和最差。在任何类别中都没有什么能比得上它。它还具有恒定的内存要求。唯一的缺点是不稳定。

它在内存方面胜过 timsort,在最坏情况下的性能和内存方面都胜过 quicksort。

但我从来没有听说过smoothsort。没有人提到它,而且大多数讨论似乎都围绕着其他排序算法。

这是为什么?

0 投票
1 回答
83 浏览

c++ - 如何在Leonardo堆中找到root的左右孩子?

根据这篇文章,树的根在位置 L(k) - 1。Ltk-1 子树的根在位置 L(k - 1) - 1。Ltk-2 子树的根在位置 L(k) - 2。

有人可以帮我理解这个吗?我正在尝试实现平滑排序。