主要思路:将数组分为有序和无序两个区域,每次从无序的区域中选择一个最大值(最小值),放到有序区域中,直到无序区域没有数字排序结束。
/*
* 快速排序(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;
}
}