简单选择排序
基本思想:在待排序的数据中选出最大(小)的元素放在其最终的位置
基本操作:
1、通过n-1次关键字比较,从n个元素中找出关键字最小的元素,将其与第一个元素交换
2、再通过n-2次比较,从剩余n-1个元素中找出关键字次小的元素,将其与第二个元素交换
3、重复以上操作,共进行n-1趟排序后,排序结束
void SelectSort(SqList &K){
for(i=1;i<L.length;i++){
k=i;
for(j=i+1;j<L=.length;j++){
if(L.r[j].key<L.r[k].key) k=j;
}
if(k!=i){
temp=L.r[i];
L.r[i]=L.r[k];
L.r[k]=temp;
}
}
}
时间复杂度分析:
最好情况:移动次数为0次
最坏情况:移动次数为3(n-1)次
无论待排序列处于什么状态,选择排序所需进行的比较次数都相同,为(n-1)