算法描述:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。
算法分析:
平均时间复杂度:O( N2 )
空间复杂度:O(1) (用于交换和记录索引)
稳定性:不稳定
算法实现:
void Select_Sort(int *array,int length)
{
assert(array && (length>0))
int i = 0;
int j,tmp;
int minPos;
for (; i < length-1; ++i)
{
minPos = i;
for (j = i+1; j < length; ++j)
{
if(*(array+j) < *(array+minPos))
minPos = j;
}
tmp = *(array+minPos);
*(array+minPos) = *(array+i);
*(array+i) = tmp;
}
return ;
}