基本思想:
首先,在R[1]-R[n]中选出排序码最小的元素,将它与R[1]交换位置;然后,在R[2]-R[n]中选出排序码最小的元素,将它与R[2]交换位置;依次做下去,在进行了n-1次选择后排序过程结束。
图示:
代码:
void selectsort()
{
int i,j,k;
for(i=1;i<=n-1;i++) {
k=i;
for(j=i+1;j<=n;j++)
if(R[j].key<R[k].key) k=j;
if(k>i) {
R[0]=R[k];
R[k]=R[i];
R[i]=R[0];
}
}
}
注:
简单选择排序的时间复杂度是O(n^2),是不稳定的排序。