Time complexity 为什么可以';我们在比较排序算法中对N个数字进行排序是否比O(N logn)时间快?

Time complexity 为什么可以';我们在比较排序算法中对N个数字进行排序是否比O(N logn)时间快?,time-complexity,heap,heapsort,binary-heap,binomial-heap,Time Complexity,Heap,Heapsort,Binary Heap,Binomial Heap,我研究了二进制、二项式和斐波那契堆排序,发现排序需要O(n logn)时间。如果有人能给我一个这样的理由,那就太好了。一个n元素列表有n排列。其中一种排列是正确排序的排列。两个元素之间的单个比较只传递1位信息,因此不可能比将搜索空间一分为二更好。因此,区分正确排序的排列与所有其他排列所需的比较次数的下限是log2(n!)∈ O(n日志n) 请注意,log2(n!)实际上只是一个下限-这并不意味着实际上可以使用n数字进行精确的上限(log2(n!))比较。事实上,有些排列需要更多的比较。但如果我们

我研究了二进制、二项式和斐波那契堆排序,发现排序需要O(n logn)时间。如果有人能给我一个这样的理由,那就太好了。

一个
n
元素列表有
n排列。其中一种排列是正确排序的排列。两个元素之间的单个比较只传递1位信息,因此不可能比将搜索空间一分为二更好。因此,区分正确排序的排列与所有其他排列所需的比较次数的下限是
log2(n!)∈ O(n日志n)

请注意,
log2(n!)
实际上只是一个下限-这并不意味着实际上可以使用
n
数字进行精确的
上限(log2(n!))
比较。事实上,有些排列需要更多的比较。但如果我们只是对渐近行为感兴趣,这并不重要


所以你看,如果我们不局限于基于比较的排序算法,下限就不成立了。(例如,请参阅桶排序或基数排序。)

一个
n
元素列表具有
n排列。其中一种排列是正确排序的排列。两个元素之间的单个比较只传递1位信息,因此不可能比将搜索空间一分为二更好。因此,区分正确排序的排列与所有其他排列所需的比较次数的下限是
log2(n!)∈ O(n日志n)

请注意,
log2(n!)
实际上只是一个下限-这并不意味着实际上可以使用
n
数字进行精确的
上限(log2(n!))
比较。事实上,有些排列需要更多的比较。但如果我们只是对渐近行为感兴趣,这并不重要


所以你看,如果我们不局限于基于比较的排序算法,下限就不成立了。(例如,请参见桶排序或基数排序。)

据我所知(很久以前),这仍然是一个未经验证的定理。原因很简单:没有人提出过比这更好的排序算法。据我所知,目前还没有一条定律或诸如此类的东西表明这是理论上的最小值,只是没有人能够改进它。我最后知道(很久以前)这仍然是一个未经验证的定理。原因很简单:没有人能想出一个排序算法来打败它。据我所知,目前还没有一项法律或诸如此类的规定,表明这是理论上的最低限度,只是没有人能够改进它。非常感谢你提供的信息。非常感谢你提供的信息。