简单选择排序的算法思想:假设排序表为L[1...n],第i趟排序即从L[i...n]中选择关键字最小的元素与L(i)交换,每一趟排序可以确定一个元素的最终位置,这样经过n-1趟排序就可以使得整个排序表有序。
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int i,j,A[11],n=10,min,t; 6 for(i=0;i<n;i++) //依次输入10个数 7 { 8 scanf("%d",&A[i]); 9 } 10 for(i=0;i<n-1;i++) //一共进行n-1趟排序 11 { 12 min = i; //记录最小元素的位置 13 for(j=i+1;j<n;j++) //在A[i..n-1]选择最小元素,从第i+1开始 14 if(A[j]<A[min]) min = j; //更新最小元素的位置 15 if(min!=i) //与第i个位置进行交换 16 { 17 t=A[min]; //交换的是A[]中的元素,t只是一个临时变量(A[t]是错误的) 18 A[min]=A[i]; 19 A[i]=t; 20 } 21 } 22 for(i=0;i<n;i++) //输出已排好序的10个数 23 { 24 printf("%d ",A[i]); 25 } 26 return 0; 27 }