算法与数据结构之选择排序(C语言)
1 #include<stdio.h> 2 #include<stdlib.h> 3 void SelectSort(int *a,int n);//预声明要调用的函数 4 int main(void) 5 { 6 int k; 7 int x[10]={2,4,6,8,0,1,3,5,7,9}; 8 for(k=0;k<10;k++) 9 printf("%d",x[k]); 10 printf("\n"); 11 SelectSort(x,10); 12 for( k=0;k<10;k++) 13 printf("%d",x[k]); 14 printf("\n"); 15 system("pause"); 16 17 return 0; 18 } 19 20 void SelectSort(int *a,int n)//数组元素是指针,数组数量 21 { 22 int i,j,t;//整型变量 23 int min;//最小值,索引号 24 for(i=0;i<n-1;i++)//n-1次扫描 25 { 26 min=i;//每次扫描前第一个元素(最小) 27 for(j=i+1;j<n;j++)//第二轮扫描找到最小值并交换 28 { 29 if(a[j]<a[min]) 30 min=j; 31 32 } 33 t=a[i];//临时变量 34 a[i]=a[min];// 35 a[min]=t; 36 } 37 38 }
选择排序基本思想:每一趟(如第n趟)在后面n-i+1(i=1,2,…,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟做完,待排序元素只剩下一个,就不用再选了。