【题目描述】
编程输入n(1≤n≤20)个小于1000非负整数,然后自动按从大到小的顺序输出。(冒泡排序)
【输入】
第一行,数的个数n;
第二行,n个非负整数。
【输出】
由大到小的n个非负整数,每个数占一行。
【输入样例】
5
2 5 8 6 12
【输出样例】
12
8
6
5
2
C++:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[1001];
int n;
int temp; //用于交换的中间变量
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++) //遍历n-1次因为最后一个数后面没有数可比较了
{ //当然也可以遍历n次(不影响结果)
for(int j=1;j<n;j++) //每次遍历需要冒泡n-1次
{
if(a[j]<a[j+1]) //大的数(泡泡)挤到前面(上面)去
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<endl; //按格式输出
}
}
C语言:
#include<stdio.h>
int main()
{
int a[1001];
int i,j,t;
int n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(int j=0;j<n-1;j++)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<n;i++)
{
printf("%d\n",a[i]);
}
}