思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
程序:
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) ,一个临时变量