主要思路:將數組分爲有序和無序兩個區域,每次從無序的區域中選擇一個最大值(最小值),放到有序區域中,直到無序區域沒有數字排序結束。
/*
* 快速排序(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;
}
}