用某排序方法对一元素序列进行非递减排序时,若该方法可保证在排序前后排序码相同者的

资格题库2022-08-02  23

问题 用某排序方法对一元素序列进行非递减排序时,若该方法可保证在排序前后排序码相同者的相对位置不变,则称该排序方法是稳定的。简单选择排序法排序方法是不稳定的,(61)可以说明这个性质。A.21 48 21*63 17B.17 21 21*48 63C.63 21 48 21*17D.21*17 48 63 21

选项 A.21 48 21*63 17
B.17 21 21*48 63
C.63 21 48 21*17
D.21*17 48 63 21

答案 A

解析 本题考查数据结构基础知识。简单选择排序算法的思想是:首先在所有记录中选出码最小的记录,把它与第1个记录交换,然后在其余的记录内选出排序码最小的记录,与第2个记录交换…依次类推,直到所有记录排好序。直接选择排序的平均时间复杂度O(n2),是不稳定的排序。第一趟下来,第一个一定是最小的或者最大关键字。算法程序:
/*将数组data中n个整数按非递减有序的方式进行排序*/
void SelectSort(intdate[],intn)
{
inti,j,k,temp;
for(i=0;i<n-1;i++){
k=i;//data[k]表示当前找到的最小数
for(j=i+1;j<n;j++){if(data[j]<data[k])k=j;}
if(k!=i){temp=data;data=data[k];data[k]=temp;}
}
}
根据以上算法,A选项的数序列经过4次排序,i=4,使用i<n-1(n-1值为4)不成立而退出整个排序算法。从最终结果看,21*排序之前位于21之后,而排序之后则位于21之前,故A选项可说明简单选择排序是不稳定的算法。同理B、C、D三个选项,排序结果中21*与21的先后顺序与排序前一样,本题选择A选项。
转载请注明原文地址:https://www.tihaiku.com/congyezige/2407812.html

最新回复(0)