38 86 65 27 34 46 74 38 14 26 53 86 65 27 34 46 14 38 27 26 53 86 65 74 34 14 26 38 27 34 53 86 65 74
46
进行对排序的过程: 初始状态 14 26 38 27 34 53
86 65 74 46
第一趟 26 27 38 46 34 53 86 65 74 [14] 第二趟 27 34 38 46 74 53 86 65 [26 14] 第三趟 34 46 38 65 74 53 86 [27 26 14] 第四趟 38 46 53 65 74 86
[34 27 26 14] 第五趟 46 65 53 86 74 [38 34 27 26 14] 第六趟 53 65 74 86 [46 38 34 27 26 14] 第七趟 65 86 74 [53 46 38 34 27 26 14] 第八趟 74 86 [65 53 46 38
34 27 26 14] 第九趟 86 [74 65 53 46 38 34 27 26
14]
24./*采用另一种直接选择排序的方法对数组A中的n元素排序*/ void SelectSort(int A[],int n) {int x;
int i,j,k; /*共需要进行n/2趟*/
for(i=1;i<=n/2;i++) /*用k保存当前区间内最小值元素的下标,初值为i*/ {k=i; /*从当前排序区间中顺序查找出具有最小值的元素A[k]*/ for(j=i+1;j<=n-i+1;j++)
if(A[j] {x=A[i];A[i]=A[k];A[k]=x; } /*用k保存当前区间内最大值元素的下标,初值为n-i+1*/ k=n-i+1; /*从当前排序区间中顺序查找出具有最大值的元素A[k]*/ for(j=n-i;j)=i+1;j--) if (A[j]>A[k]) k=j; /*把A[k]对调到该排序区间的最后一个位置*/ if(k!=n-i+1) {x=A[n-i+1];A[n-i+1]=A[k];A[k]=x; } } }