介绍
简单选择排序,属于选择排序的一种,时间复杂度为O(n^2),空间复杂度为O(1),具有稳定性。
思想
简单选择排序的思路是每通过一轮比较,找出一个最小的数(假设为从小到大排序),安排好其位置,然后下轮比较就可以不考虑这个已经确定位置的数。这样经过n-1轮比较,就可以确定这组数的顺序。简单来说就是先找到最小的放在第一位,然后从剩下的数中找到第二小的放到第二位,依此类推知道排完序。
实现
/**
* a[n];数组
*/
void chooseSort(){ //排序方法,从小到大
int k,t; //k代表每轮比较中最小的数的序号,t代表其值
for(int i=0;i<n-1;i++){ //共n-1轮比较
k=i; //每轮比较开始前k的默认值为i,i代表第几轮比较
for(int j=i+1;j<n;j++){ //找出余下的数中最小的数,把它的位置赋给k
if(a[j]<a[k]){
k=j;
}
}
t=a[k]; //把此轮比较得到的最小数放到未排序数中的第一位
a[k]=a[i];
a[i]=t;
}
}