在第一趟排序之后,一定能把数据表中最大或最小元素放在其最终位置上的排序算法是______。

admin2013-02-02  34

问题 在第一趟排序之后,一定能把数据表中最大或最小元素放在其最终位置上的排序算法是______。

选项 A、冒泡排序
B、基数排序
C、快速排序
D、归并排序

答案A

解析 对于选项A,冒泡排序将被排序的记录数组R[1..n)垂直排列,每个记录R看作是重量为ki的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R凡扫描到违反本原则的轻气泡,就使其向上“飘浮”。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。由此可见,冒泡排序第1趟排序之后,最轻的“气泡”一定会被浮到最上面,即能把数据表中最大或最小元素放在其最终位置上。故本题应该选择A。对于选项B,基数排序的基本思想是:从低位到高位依次对待排序的关键码进行分配和收集,经过d趟分配和收集,就可以得到一个有序序列。所以,基数排序第1趟排序之后,得到的是以数据表中各元素的个位进行排序的结果,不一定能把数据表中最大或最小元素放在其最终位置上。对于选项C,快速排序的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。快速排序第1趟排序之后,只能使某个关键元素被插入到一个位置,使得该位置之前的所有元素均小于(或大于)关键元素,之后的所有元素均大于(或小于)关键元素。所以,也不一定能把数据表中最大或最小元素放在其最终位置上。对于选项D,归并排序是将两个或两个以上的有序子表合并成一个新的有序表。所以,归并排序第1趟排序之后,只能得到两两有序的一个序列,并不能把数据表中最大或最小元素放在其最终位置上。
转载请注明原文地址:https://kaotiyun.com/show/gBVZ777K
0

相关试题推荐
最新回复(0)