一、定义
每一趟排序在n - i + 1个记录中选择一个关键字最小的记录作为序列中的第i个记录。一趟排序是通过n - i + 1次关键字的比较,从n - i + 1个记录中选择一个最小的记录,并和第i个记录交换。
二、实现
/*
选择排序:
从头至尾扫描序列,找出最小的一个元素,和第n - i - 1个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。
算法复杂度 0(n^2),稳定的算法
*/
void selectSort(ElementType list[],int n){
ElementType temp;
int i,j,min;
for(i = 0 ;i < n;i++){
min = i;
for(j = i + 1 ; j < n; j++){
if(list[j] < list[min])
min = j;
}
if(min != i){
temp = list[i];
list[i] = list[min];
list[min] = temp;
}
}
}