数据结构习题及答案 下载本文

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; } }

}