爷爷,告诉我题解吧

1. 冒泡排序的过程

题目ID:6318必做题100分

最新提交:

Wrong Answer 10 分

历史最高:

Wrong Answer 10 分

时间限制: 1000ms

空间限制: 65536kB

题目描述

冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。

输入N个整数,对他们从小到大进行冒泡排序,每一次都从第一个元素开始向后不断比较,若是后面的元素小于前面的元素,则将他们两交换,输出冒泡排序的中间过程以及最后结果。

输入格式

第一行输入一个整数N,
第二行输入N个整数ai。

输出格式

输出N−1行排序过程,每行N个数。

样例

Input 1

5 5 4 3 2 1

Output 1

4 3 2 1 5 3 2 1 4 5 2 1 3 4 5 1 2 3 4 5

数据范围

1<=N<=1000,0<=ai<=10^9

WA代码:

#include <bits/stdc++.h>
using namespace std;
int a[1010];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for(int i = 1; i <= n - 1; i++) {
bool flag = false;
for(int j = 1; j <= n - i; j++) {
if(a[j] > a[j + 1]) {
swap(a[j], a[j + 1]);
flag = true;
}
}
if(!flag) {
break;
}
for(int i = 1; i <= n; i++) {
cout << a[i] << ’ ‘;
}
cout<<’\n’;
}
return 0;
}

3393258D

3393454A

33729782

33936323

2 个赞

你的 cout<<“\n”; 应该是 cout<<endl;
并且输出过程应该在上一个循环里面,不应该是另起一个循环

4 个赞

谢谢,“cout<<“\n”;”改了
输出不能动
把“if(!flag) {break;}”去掉就行了

3 个赞

嘿!

1 个赞