以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:
初始序列:{49 27 65 97 76 12 38}
第1趟:12与49交换:12{27 65 97 76 49 38}
第2趟:27不动 :12 27{65 97 76 49 38}
第3趟:65与38交换:12 27 38{97 76 49 65}
第4趟:97与49交换:12 27 38 49{76 97 65}
第5趟:76与65交换:12 27 38 49 65{97 76}
第6趟:97与76交换:12 27 38 49 65 76 97 完成
简单选择排序的算法具体描述如下:
void SelectSort(RecordType r[], int length) /*对记录数组r做简单选择排序,length为待排序记录的个数*/标签:27,49,选择,76,38,65,排序,97 From: https://blog.51cto.com/u_15765446/5718410
{
int temp;
for ( i=0 ; i< length-1 ; i++) //n-1趟排序
{
int index=i; //假设index处对应的数组元素是最小的
for (int j=i+1 ; j < length ; j++) //查找最小记录的位置
if (r[j].key < r[index].key )
index=j;
if ( index!=i) //若无序区第一个元素不是无序区中最小元素,则进行交换
{
temp = r[i];
r[i] = r[index];
r[index] = temp;
}
}
}