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





