快速排序与合并排序几乎排序的数组

时间:2018-03-31 00:07:01

标签: algorithm sorting

当处理几乎排序的数组哪个算法执行更好的快速排序或合并排序时,为什么?我意识到其他算法在这种情况下可能会比这些更好。

2 个答案:

答案 0 :(得分:0)

快速排序和合并排序对于排序数组都很有用,因为对于这两种算法,排序数组是一种很好的情况,可以让它们在O(n)中运行。

然而,Quick Sort的官僚开销较少,因为它可以就地完成任务。 (在现代架构上,它甚至可能受益于多个处理器内核,具体取决于实现。)

另一方面,

Merge Sort在每个递归步骤中构建新的数据结构(列表),将它们交还给调用者,调用者然后合并这些列表以成为其结果。因此,即使这也在O(n)中运行,这将会更慢(除非发生奇怪的事情)。它还需要比Quick Sort更多的内存。

但请记住,在最坏的情况下,快速排序仍然需要O(n²)(而合并排序不会提高到O(n log n)以上),所以如果你只是希望有几乎排序的数组,这应该考虑。

答案 1 :(得分:-1)

部分排序不会改变快速排序算法的速度 - 一般情况下它不是自适应(虽然某些实现可能存在,但生产率较差)。

Adaptive sorting(虽然信息太少)

Natural Merge Sort利用预先排序并从中受益(虽然使用最广泛的合并排序方法不适应)