选择排序

算法描述:比如在一个长度为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 ;
}  

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