基本思想:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。
时间复杂度O(n^2),不稳定。
/* 选择排序法 */ #include <stdio.h> #include <stdlib.h> #define A 10 int s[A]={34,23,3,27,92,37,82,10,-10,39}; void selection_sort(int s[],int n) { int i,j,temp,save_index; int max; for(i=0;i<n;i++) { max=s[i]; for(j=i+1;j<n;j++) { if(s[j]>max) { max=s[j]; save_index=j; } } if(save_index!=i) { temp=s[i]; s[i]=max; s[save_index]=temp; } } return; } int main(void) { int i; selection_sort(s,A); printf("The selection sort result is:\n"); for(i=0;i<A;i++) { printf("%d ",s[i]); } printf("\n"); system("pause"); return 0; }