思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
程序:
template<classT>
void SelectSort(T *x,constintN)//不稳定
{
for(inti =0; i < N; i++)
{
intminindex = i;
for(intj = i; j < N; j++ )
{
if(x[minindex]> x[j])
{
minindex = j;
}
}
if(minindex!= i)
{
Ttemp = x[i];
x[i]= x[minindex];
x[minindex]= temp;
}
}
}
分析:
稳定性:选择排序在两数相等的情况下不交换位置,所以是稳定的。
时间复杂度:最差时间复杂度 O(n²)
辅助空间复杂度 :O(1) ,一个临时变量