排序算法2:選擇排序(selection-sort)

主要思路:將數組分爲有序和無序兩個區域,每次從無序的區域中選擇一個最大值(最小值),放到有序區域中,直到無序區域沒有數字排序結束。

/*
 *    快速排序(Selection sort)
 *  1.每次都從未排序的隊列中尋找一個最大值,放到未排序數列的頭部,直到所有數字排列完成
 */
void selection_sort(int *nums,int len)
{
    int max = 0,max_idx = 0;
    int tmp = 0;

    for(int i = 0;i < len;i++)
    {
        max = nums[i];
        max_idx = i;

        for(int j = i;j < len;j++)
        {
            if(max < nums[j])
            {
                max = nums[j];
                max_idx = j;
            }
        }

        /* 交換位置 */
        tmp = nums[max_idx];
        nums[max_idx] = nums[i];
        nums[i] = tmp;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章