|
发表于 2020-5-17 11:04:14
|
显示全部楼层
本楼为最佳答案
回帖奖励 +1 鱼币
本帖最后由 sunrise085 于 2020-5-17 11:08 编辑
不知道你是打算怎么排序、是整个二维数组排序,还是每一行单独排序?
冒泡排序需要两层循环
你的是二维数组冒泡排序,若每行单独排序需要三层循环。
- #define _CRT_SECURE_NO_WARNINGS
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- int main()
- {
- int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
- int h = 0;
- for (int i = 0; i < 3; i++)
- for (int j = 0; j < 4; j++)
- for (int k=0;k<4-j;k++){
- if ( a[i][k]> a[i][k + 1]) {
- h =a[i][k];
- a[i][k] = a[i][k + 1];
- a[i][k + 1] = h;
- }
- }
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 4; j++) {
- printf("a[%d][%d]=%-3d\n", i, j, a[i][j]);
- }
- printf("\n");
- }
- system("pause");
- return 0;
- }
复制代码
若是对着呢个数组进行排序,只需两层循环
- #define _CRT_SECURE_NO_WARNINGS
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- int main()
- {
- int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
- int h = 0;
- for (int i = 0; i < 3*4; i++)
- for (int j=0;j<12-i;j++){
- if ( a[j/4][j%4]> a[j/4][j%4 + 1]) {
- h =a[j/4][j%4];
- a[j/4][j%4] = a[j/4][j%4 + 1];
- a[j/4][j%4 + 1] = h;
- }
- }
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 4; j++) {
- printf("a[%d][%d]=%-3d\n", i, j, a[i][j]);
- }
- printf("\n");
- }
- system("pause");
- return 0;
- }
复制代码 |
|