测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A22617. 冒泡排序

填空题 中等

题目描述

冒泡排序

题目描述

编程输入n (1≤n≤20) 个小于1000非负整数,然后自动按从大到小的顺序输出。(冒泡排序)

输入

第一行,数的个数n;

第二行,n个非负整数。

输出

由大到小的n个非负整数,每个数占一行。

输入样例

5
2 5 8 6 12

输出样例

12
8
6
5
2

参考答案

#include<bits/stdc++.h> using namespace std; int main() { int n, a[25]; cin >> n; for(int i = 1; i <= n; ++i) cin >> a[i]; for(int i = 1; i <= n-1; ++i) for(int j = 1; j <= n-i; ++j) { if(a[j] < a[j+1]) swap(a[j], a[j+1]); } for(int i = 1; i <= n; ++i) cout << a[i] << endl; return 0; }

答案解析


//解法2
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n, a[25];
	cin >> n;
	for(int i = 1; i <= n; ++i)
		cin >> a[i];
	for(int i = n; i >= 2; --i)//这次循环要确定的数的最终位置
		for(int j = 1; j <= i - 1; ++j)//要交换的数对的第一个数
		{
			if(a[j] < a[j+1])
				swap(a[j], a[j+1]);
		}
	for(int i = 1; i <= n; ++i)
		cout << a[i] << endl;
	return 0;
}



上一题 下一题