排序算法系列之选择排序

思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

程序:

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) ,一个临时变量

你可能感兴趣的:(选择排序,排序算法)