在最坏的情况下,对于基于比较的排序,比较次数的最严格的下限约为
(A) N
(B) N ^ 2
(C) NlogN
(D) N(logN)^ 2答案: (C)
说明:比较排序算法所需的比较次数与Nlog(N)成正比,其中N是要排序的元素数。这个界限渐近严格:
给定一个不同数字的列表(我们可以假设这是因为这是最坏情况的分析),存在N个阶乘置换,其中之一就是按排序顺序排列的列表。排序算法必须从比较中获得足够的信息,以识别正确的排列。如果算法总是在最多f(N)个步骤后才完成,则它不能区分超过2 ^ f(N)个情况,因为键是不同的,并且每个比较只有两个可能的结果。所以,
2 ^ f(N)> = N!或等效地f(N)> = log(N!)。
由于log(N!)为Omega(NlogN),因此答案为NlogN。
欲了解更多详情,请阅读
这个问题的测验