1. 基本思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
2。排序过程示例:
初始关键字 【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 【49 97 65 76】
第五趟排序后 13 27 38 49 49 【97 97 76】
第六趟排序后 13 27 38 49 49 76 【76 97】
第七趟排序后 13 27 38 49 49 76 76 【 97】
最后排序结果 13 27 38 49 49 76 76 97
3。 代码
void SelectSort() {
for(int i=0;i<n-1;i++) {
int min_index=i;
for(int j=i+1;j<n-1;j++){
if(a[j]<a[min_index])
min_index=j;
}
}
if(min_index!=i){
int temp=0;
temp=a[min_index];a[min_index]=a[i];a[i]=temp;
}
}
4。复杂度
效率O(n²),适用于排序小的列表。