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

admin2022-08-02  38

问题 用某排序方法对一元素序列进行非递减排序时,若该方法可保证在排序前后排序码相同者的相对位置不变,则称该排序方法是稳定的。简单选择排序法排序方法是不稳定的,()可以说明这个性质。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://tihaiku.com/congyezige/2408365.html

最新回复(0)