冒泡排序
每一轮选出一个最大的排最后面
依次排序
排 n-1 轮
每一轮,j<n-1-i;
num[ 5 ] = { 3 9 1 6 2 };
- - - - 9
- - - 6 9
- - 3 6 9
- 2 3 6 9 (已经能确定)
1 2 3 6 9
for(int i=0; i<n-1; i++)
{
for(int j=0; j<n-1-i; j++)
{
if(nums[j]>nums[j+1])
{
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
.
选择排序
每一轮,设置当前数字为最小值,
依次与它后面数字比较,选出最小的数字放在当前位置,循环(轮)
num[ 5 ] = { 3 9 1 6 2 };
1 - - - -
1 2 - - -
1 2 3 - -
1 2 3 6 - (已经能确定)
1 2 3 6 9
for(int i=0; i<n; i++)
{
int min = i;
//当前数字i(min)与后面数字比较,找出最小数字
for(int j=i+1; j<n; j++)
{
if(nums[min]>nums[j])
{
min = j;
}
}
//选出了最小数字min
//当前假设最小数字与min不一样,交换
if(i!= min)
{
int temp = nums[i];
nums[i] = nums[min];
nums[min] = nums[i];
}
}