1、基本思想
将数组划分为有序区和无序区,寻找无序区中的最小值和无序区的首元素交换,有序区扩大一个,循环至无序区全部交换完时,则排序完毕。
2、直接选择排序属于不稳定的排序。
时间复杂度都是O(n^2),空间复杂度O(1)。
3、代码
将elem[]数组按递增进行直接选择排序
void SelectSort(int elem[], int elemLen)
{
int minIndex = 0;//标记无序区中最小值的序号
int tempElem = 0;//交换数据时临时变量
for(int i = 0; i < elemLen; i++)
{
minIndex = i;
for(int j = i+1; j < elemLen; j++)
{
if(elem[j] < elem[minIndex])
{
minIndex = j;
}
}
//将最小值与无序区中第一个值交换
if(minIndex != i)
{
tempElem = elem[i];
elem[i] = elem[minIndex];
elem[minIndex] = tempElem;
}
}
}