单选题
用某排序方法对一元素序列进行非递减排序时,若该方法可保证在排序前后排序码相同者的相对位置不变,则称该排序方法是稳定的。简单选择排序法排序方法是不稳定的,(61)可以说明这个性质。
A21 48 21*63 17
B17 21 21*48 63
C63 21 48 21*17
D21*17 48 63 21
正确答案
答案解析
本题考查数据结构基础知识。简单选择排序算法的思想是:首先在所有记录中选出码最小的记录,把它与第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[i];data[i]=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选项。