排序性能低于O(nlogn)

时间:2017-09-14 02:34:56

标签: performance sorting

除了有限的桶排序外,为什么不能在运行时间内实现排序性能低于O(nlog(n))?

2 个答案:

答案 0 :(得分:1)

有一种简单的方法可以理解它。

对n项进行排序与​​进行n次搜索大致相同。您正在搜索在表格中插入每个项目的位置。因此,取下基础搜索的大O,并将其乘以n。

因此,如果基线搜索是线性搜索中的O(n),则排序为O(n ^ 2),如插入或冒泡排序。

如果底层搜索是O(log n),就像二进制搜索一样,排序为O(n log n),如快速排序,树排序,合并排序等。

如果基础搜索是O(1),如在散列函数保留顺序的散列搜索中,则排序为O(n)。获得保留顺序的哈希函数是困难的部分,但一个非常简单的例子是对一副牌进行排序。 如果你有52个插槽,你只需将每张卡插入其插槽,然后将它们收集起来。

答案 1 :(得分:0)

在有限的域中,它可以超过n log n限制。

例如,使用van Emde Boas是优先级队列并将其与Thorups合并。

  

相反,优先级队列可以简单地用于排序:首先插入要排序的所有键,然后通过重复删除最小值按排序顺序提取它们。渐渐地,这可以根据排序来确定优先级队列的复杂性。

相关问题