鱼C论坛

 找回密码
 立即注册
查看: 210|回复: 22

[已解决]二维数组使用冒泡排序

[复制链接]
最佳答案
0 
发表于 2020-5-17 10:23:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
老哥们,我想使用for循环冒泡排序排序二维数组中的元素,但是我这么写运行结果元素丢失了。请教缺了什么,或者二维数组不能使用冒泡排序
最佳答案
2020-5-17 11:04:14
本帖最后由 sunrise085 于 2020-5-17 11:08 编辑


不知道你是打算怎么排序、是整个二维数组排序,还是每一行单独排序?
冒泡排序需要两层循环
你的是二维数组冒泡排序,若每行单独排序需要三层循环。
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. int main()
  6. {
  7.     int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
  8.     int h = 0;
  9.     for (int i = 0; i < 3; i++)
  10.         for (int j = 0; j < 4; j++)
  11.             for (int k=0;k<4-j;k++){
  12.                 if ( a[i][k]> a[i][k + 1]) {
  13.                     h =a[i][k];
  14.                     a[i][k] = a[i][k + 1];
  15.                     a[i][k + 1] = h;
  16.                 }
  17.             }
  18.     for (int i = 0; i < 3; i++) {
  19.         for (int j = 0; j < 4; j++) {
  20.             printf("a[%d][%d]=%-3d\n", i, j, a[i][j]);
  21.         }
  22.         printf("\n");
  23.     }
  24.     system("pause");
  25.     return 0;
  26. }
复制代码


若是对着呢个数组进行排序,只需两层循环
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. int main()
  6. {
  7.     int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
  8.     int h = 0;
  9.     for (int i = 0; i < 3*4; i++)
  10.         for (int j=0;j<12-i;j++){
  11.             if ( a[j/4][j%4]> a[j/4][j%4 + 1]) {
  12.                 h =a[j/4][j%4];
  13.                 a[j/4][j%4] = a[j/4][j%4 + 1];
  14.                 a[j/4][j%4 + 1] = h;
  15.             }
  16.         }
  17.     for (int i = 0; i < 3; i++) {
  18.         for (int j = 0; j < 4; j++) {
  19.             printf("a[%d][%d]=%-3d\n", i, j, a[i][j]);
  20.         }
  21.         printf("\n");
  22.     }
  23.     system("pause");
  24.     return 0;
  25. }
复制代码
C.png

评分

参与人数 2荣誉 -1 鱼币 -4 收起 理由
MIke_python小小 -1 -1 恶意评选最佳!!
sunrise085 -3 恶意评选最佳!!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
693 
发表于 2020-5-17 11:04:14 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

本帖最后由 sunrise085 于 2020-5-17 11:08 编辑


不知道你是打算怎么排序、是整个二维数组排序,还是每一行单独排序?
冒泡排序需要两层循环
你的是二维数组冒泡排序,若每行单独排序需要三层循环。
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. int main()
  6. {
  7.     int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
  8.     int h = 0;
  9.     for (int i = 0; i < 3; i++)
  10.         for (int j = 0; j < 4; j++)
  11.             for (int k=0;k<4-j;k++){
  12.                 if ( a[i][k]> a[i][k + 1]) {
  13.                     h =a[i][k];
  14.                     a[i][k] = a[i][k + 1];
  15.                     a[i][k + 1] = h;
  16.                 }
  17.             }
  18.     for (int i = 0; i < 3; i++) {
  19.         for (int j = 0; j < 4; j++) {
  20.             printf("a[%d][%d]=%-3d\n", i, j, a[i][j]);
  21.         }
  22.         printf("\n");
  23.     }
  24.     system("pause");
  25.     return 0;
  26. }
复制代码


若是对着呢个数组进行排序,只需两层循环
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. int main()
  6. {
  7.     int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
  8.     int h = 0;
  9.     for (int i = 0; i < 3*4; i++)
  10.         for (int j=0;j<12-i;j++){
  11.             if ( a[j/4][j%4]> a[j/4][j%4 + 1]) {
  12.                 h =a[j/4][j%4];
  13.                 a[j/4][j%4] = a[j/4][j%4 + 1];
  14.                 a[j/4][j%4 + 1] = h;
  15.             }
  16.         }
  17.     for (int i = 0; i < 3; i++) {
  18.         for (int j = 0; j < 4; j++) {
  19.             printf("a[%d][%d]=%-3d\n", i, j, a[i][j]);
  20.         }
  21.         printf("\n");
  22.     }
  23.     system("pause");
  24.     return 0;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2020-5-17 11:18:34

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

最佳答案
117 
发表于 2020-5-17 10:24:05 | 显示全部楼层

回帖奖励 +1 鱼币

应该是数组下标弄错了
把文字代码发出来,测一下(可以复制粘贴的那种)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2 
发表于 2020-5-17 10:26:54 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-5-17 10:28:49 | 显示全部楼层
liuzhengyuan 发表于 2020-5-17 10:24
应该是数组下标弄错了
把文字代码发出来,测一下(可以复制粘贴的那种)

#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;
        int j;
        for (int i = 0; i < 3; i++) {
                for ( j = 0; j < 4; j++) {
                        if ( a[j]> a[j + 1]) {
                                h =a[j];
                                a[j] = a[j + 1];
                                a[j + 1] = h;
                        }
                }
        }
        for (int i = 0; i < 3; i++) {
                for (j = 0; j < 4; j++) {
                        printf("a[%d][%d]=%-3d\n", i, j, a[j]);
                }
                printf("\n");
        }
        system("pause");
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2 
发表于 2020-5-17 10:31:37 | 显示全部楼层
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. int main()
  6. {
  7.         int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
  8.         int h = 0;
  9.         int j;
  10.         for (int i = 0; i < 3; i++) {
  11.                 for ( j = 0; j < 4; j++) {
  12.                         if ( a[j]> a[j + 1]) {
  13.                                 h =a[j];
  14.                                 a[j] = a[j + 1];
  15.                                 a[j + 1] = h;
  16.                         }
  17.                 }
  18.         }
  19.         for (int i = 0; i < 3; i++) {
  20.                 for (j = 0; j < 4; j++) {
  21.                         printf("a[%d][%d]=%-3d\n", i, j, a[j]);
  22.                 }
  23.                 printf("\n");
  24.         }
  25.         system("pause");
  26.         return 0;
  27. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2 
发表于 2020-5-17 10:32:47 | 显示全部楼层
买了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-5-17 10:34:03 | 显示全部楼层

这样子怎么上传的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
117 
发表于 2020-5-17 10:35:29 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-5-17 10:44 编辑
miniArce 发表于 2020-5-17 10:28
#define _CRT_SECURE_NO_WARNINGS
#include
#include

  1. for (int j = 0; j < 4 - 1; j++)
复制代码
排序改成这样试试

如何正确地发代码、上传图片和附件?
(出处: 鱼C论坛)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-5-17 10:47:29 | 显示全部楼层
liuzhengyuan 发表于 2020-5-17 10:35
排序改成这样试试

如何正确地发代码、上传图片和附件?
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. int main()
  6. {
  7.         int a[3][4] = { {16,11,12,2},{9,8,7,6},{4,3,15,1}};
  8.         int h = 0;
  9.         int j;
  10.         for (int i = 0; i < 3; i++) {
  11.                 for ( j = 0; j < 4; j++) {
  12.                         if ( a[i][j]> a[i][j + 1]) {
  13.                                 h =a[i][j];
  14.                                 a[i][j] = a[i][j + 1];
  15.                                 a[i][j + 1] = h;
  16.                         }
  17.                 }
  18.         }
  19.         for (int i = 0; i < 3; i++) {
  20.                 for (j = 0; j < 4; j++) {
  21.                         printf("a[%d][%d]=%-3d\n", i, j, a[i][j]);
  22.                 }
  23.                 printf("\n");
  24.         }
  25.         system("pause");
  26.         return 0;
  27. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
35 
发表于 2020-5-17 11:43:51 | 显示全部楼层

回帖奖励 +1 鱼币

10楼讲解的很详细。提问的时候最好说清楚,比如此题是整个数组排序还是行排序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
 楼主| 发表于 2020-5-20 03:57:49 | 显示全部楼层
chxchxkkk 发表于 2020-5-17 11:43
10楼讲解的很详细。提问的时候最好说清楚,比如此题是整个数组排序还是行排序

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2020-5-20 08:32:02 | 显示全部楼层

回帖奖励 +1 鱼币

1

评分

参与人数 1荣誉 -1 鱼币 -1 收起 理由
Mike_python小 -1 -1 请不要无意义灌水!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
693 
发表于 2020-5-20 09:55:44 | 显示全部楼层

Are you kidding me?  
11楼就是你想要的最佳答案?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2020-5-20 10:06:45 | 显示全部楼层

回帖奖励 +1 鱼币

11楼这个...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
2 
发表于 2020-5-20 10:08:56 | 显示全部楼层

回帖奖励 +1 鱼币

恶意评选最佳!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
4 
发表于 2020-5-20 10:09:10 | 显示全部楼层

回帖奖励 +1 鱼币

恶意评选最佳!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
272 
发表于 2020-5-22 09:06:47 | 显示全部楼层
荒唐事。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
3 
发表于 2020-5-23 13:10:39 | 显示全部楼层

回帖奖励 +1 鱼币

鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
0 
发表于 2020-5-23 14:50:49 | 显示全部楼层
鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2020-6-2 18:28

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表