每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
例如:
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49 ]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
程序:
int main(void) { int a[10],i,j,tmp,b; srand(time(NULL)); for(i=0;i<10;i++) a[i]=rand()%100; for(i=0;i<10;i++) printf("%3d",a[i]); printf(" "); for(i=0;i<9;i++) { tmp=i; for(j=i+1;j<10;j++) { if(a[tmp]>a[j]) tmp=j; } if(i!=tmp) { b=a[tmp]; a[tmp]=a[i]; a[i]=b; } } for(i=0;i<10;i++) printf("%3d",a[i]); printf(" "); return 0; }
摘自http://baike.baidu.com/link?url=n97WMi4BdkVvFXERSgdozICVv3_Nbxf-AZU8h2XDxgsG6_MA6uD6qJWsGNDZcs8w