【题目描述】
编程输入n(1≤n≤20)个小于10001000非负整数,然后自动按从大到小的顺序输出。(冒泡排序)
【输入】
第一行,数的个数n;
第二行,n个非负整数。
【输出】
由大到小的n个非负整数,每个数占一行。
【输入样例】
5
2 5 8 6 12
【输出样例】
12
8
6
5
2
-------------------------------------主函数内-------------------------------------
#include<stdio.h>
int main()
{
int i,j,n,temp;
scanf("%d \n",&n);
int arr[n];
for(i=0;i<n;i++)
{
scanf("%3d",&arr[i]);
}
for(i=0;i<n;i++)//确认比较的个数
{
for(j=0;j<n-1;j++)//确认比较的遍数
{
if(arr[j]<arr[j+1])//降序
{
/*比较相邻的两个数据
若顺序不对,则将其位置交换*/
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%3d",arr[i]);
}
return 0;
}
-------------------------------------运用函数结构体-------------------------------------
#include<stdio.h>
int Bubble(int arr[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)//确认比较的个数
{
for(j=0;j<n-1;j++)//确认比较的遍数
{
if(arr[j]<arr[j+1])//降序
{
/*比较相邻的两个数据
若顺序不对,则将其位置交换*/
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main()
{
int i,n;
scanf("%d \n",&n);
int arr[n];
for(i=0;i<n;i++)
{
scanf("%3d",&arr[i]);
}
Bubble(arr,n);
for(i=0;i<n;i++)
{
printf("%3d",arr[i]);
}
return 0;
}