习题2 — 冒牌排序过程输出(不输出重复部分)
题目描述
给出一组正整数,请你用冒泡排序的方式把这组数据从小到达排列,要求每经过一轮排序都要把当前数据的状态输出并且排序完成后立即停止循环。
输入
第一行输入一个正整数n,表示这组数据的个数。
第二行输入n个正整数。
样例输入
1 2
| 8 49 38 65 97 76 13 27 49
|
输出
输出若干行,每行n个数,表示每经过一轮排序之后的数据(若输入数据有序,则无输出!!)。
样例输出
1 2 3 4 5
| 38 49 65 76 13 27 49 97 38 49 65 13 27 49 76 97 38 49 13 27 49 65 76 97 38 13 27 49 49 65 76 97 13 27 38 49 49 65 76 97
|
代码实现如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <stdio.h> int main() { int i, j, temp, n; scanf("%d", &n);
int flag = 0; int a[1000];
for (int m = 0; m < n; m++) { scanf("%d", &a[m]); getchar(); } for (i = 0; i < n - 1; i++) { for (j = 0; j < n - 1; j++) { if (a[j] > a[j + 1]) { flag = 1; temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } }
if (!flag) { break; }else { flag = 0; } for (int k = 0; k < n; k++) printf("%d ", a[k]); printf("\n");
}
return 0; }
|