#C05L01P03. C05.L01.插入与冒泡排序.引例2.冒泡排序
C05.L01.插入与冒泡排序.引例2.冒泡排序
题目描述
输入 N 个整数,使用插入排序法从小到大输出。
输入格式
第一行 1 个正整数: N ,范围在 [1,1000]。
第二行 N 个整数,每个整数范围在 [0,1000000]。
输出格式
一行 N 个从小到大的整数。
样例
4
5 3 6 1
1 3 5 6
4
5 5 1 9
1 5 5 9
完成程序
把大的数字冒泡到后端(和概述中的动画图一致)
#include<bits/stdc++.h>
using namespace std;
int n,a[1001];
int main()
{
int i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=n;i>1;i--)
{
// a[i] 之后的数字为已经排序好的数字(从 a[i+1] 到 a[n] 为从小到大)
// a[1] 到 a[i] 为还没有排序的数字
// 每循环一轮,就能到 a[1] 到 a[i] 里面最大的数字冒泡到 a[i] 位置
for(j=填空(1);j<填空(2);j++)
if(a[j]<a[j+1]) //相邻的2个数字比较
填空(3);
}
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}
填空(1):{{ input(1) }}
填空(2):{{ input(2) }}
填空(3):{{ input(3) }}
把小的数字冒泡到前端
#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
// a[1] 到 a[i-1] 为已经排序的数字
// a[i] 到 a[n] 为未排序的数字
// 每一轮循环,就是在 a[i] 到 a[n] 范围内,把最小的数字冒泡到 a[i] 位置
for(j=填空(4);填空(5);j--)
if(a[j]<a[j-1]) //相邻两个数字的比较
填空(6);
}
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}
填空(6):{{ input(4) }}
填空(5):{{ input(5) }}
填空(4):{{ input(6) }}
相关
在以下作业中: