问答题
全国有10000人参加物理竞赛,只录取成绩优异的前10名,并将他们从高分到低分输出。而对落选的其他考生,不需排出名次,问此种情况下,用何种排序方法速度最快?为什么?【北京邮电大学1996一、3(4分)】
【正确答案】正确答案:在内部排序方法中,一趟排序后只有简单选择排序和冒泡排序可以选出一个最大(或最小)元素,并加入已有的有序子序列中,但要比较n一1次。选次大元素要再比较n一2次,其时间复杂度是O(n
2
)。从10 000个元素中选10个元素不能使用这种方法。而插入排序及希尔排序、快速排序、归并排序、基数排序等时间性能好的排序,都要等到最后才能确定各元素位置。只有堆排序,在未结束全部排序前,可以有部分排序结果。建立堆后,堆顶元素就是最大(或最小,视大堆或小堆而定)元素,然后,调堆又选出次大(小)元素。凡要求在n个元素中选出k(k
2)个最大(或最小)元素,一般均使用堆排序。因为堆排序建堆比较次数至多不超过4n,对深度为k的堆,在调堆算法中进行的关键字的比较次数至多为2(k-1)次,且辅助空间为O(1)。因快速排序会出现最差情况,时间复杂度为O(n2),所以,这里不采用快速排序。
【答案解析】