miniArce 发表于 2020-5-17 10:23:06

二维数组使用冒泡排序

老哥们,我想使用for循环冒泡排序排序二维数组中的元素,但是我这么写运行结果元素丢失了。请教缺了什么,或者二维数组不能使用冒泡排序

sunrise085 发表于 2020-5-17 11:04:14

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

miniArce 发表于 2020-5-17 10:47


不知道你是打算怎么排序、是整个二维数组排序,还是每一行单独排序?
冒泡排序需要两层循环
你的是二维数组冒泡排序,若每行单独排序需要三层循环。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    int a = { {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> a) {
                  h =a;
                  a = a;
                  a = h;
                }
            }
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 4; j++) {
            printf("a[%d][%d]=%-3d\n", i, j, a);
      }
      printf("\n");
    }
    system("pause");
    return 0;
}

若是对着呢个数组进行排序,只需两层循环
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    int a = { {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> a) {
                h =a;
                a = a;
                a = h;
            }
      }
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 4; j++) {
            printf("a[%d][%d]=%-3d\n", i, j, a);
      }
      printf("\n");
    }
    system("pause");
    return 0;
}

liuzhengyuan 发表于 2020-5-17 10:24:05

应该是数组下标弄错了
把文字代码发出来,测一下(可以复制粘贴的那种)

焦健鬼 发表于 2020-5-17 10:26:54

miniArce 发表于 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 = { {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> a) {
                                h =a;
                                a = a;
                                a = h;
                        }
                }
        }
        for (int i = 0; i < 3; i++) {
                for (j = 0; j < 4; j++) {
                        printf("a[%d][%d]=%-3d\n", i, j, a);
                }
                printf("\n");
        }
        system("pause");
        return 0;
}

焦健鬼 发表于 2020-5-17 10:31:37

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
      int a = { {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> a) {
                              h =a;
                              a = a;
                              a = h;
                        }
                }
      }
      for (int i = 0; i < 3; i++) {
                for (j = 0; j < 4; j++) {
                        printf("a[%d][%d]=%-3d\n", i, j, a);
                }
                printf("\n");
      }
      system("pause");
      return 0;
}

焦健鬼 发表于 2020-5-17 10:32:47

买了

miniArce 发表于 2020-5-17 10:34:03

焦健鬼 发表于 2020-5-17 10:32
买了

这样子怎么上传的

liuzhengyuan 发表于 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


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

如何正确地发代码、上传图片和附件?
(出处: 鱼C论坛)

miniArce 发表于 2020-5-17 10:47:29

liuzhengyuan 发表于 2020-5-17 10:35
排序改成这样试试

如何正确地发代码、上传图片和附件?


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
        int a = { {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> a) {
                                h =a;
                                a = a;
                                a = h;
                        }
                }
        }
        for (int i = 0; i < 3; i++) {
                for (j = 0; j < 4; j++) {
                        printf("a[%d][%d]=%-3d\n", i, j, a);
                }
                printf("\n");
        }
        system("pause");
        return 0;
}

chxchxkkk 发表于 2020-5-17 11:43:51

10楼讲解的很详细。提问的时候最好说清楚,比如此题是整个数组排序还是行排序

miniArce 发表于 2020-5-20 03:57:49

chxchxkkk 发表于 2020-5-17 11:43
10楼讲解的很详细。提问的时候最好说清楚,比如此题是整个数组排序还是行排序

谢谢

bailean 发表于 2020-5-20 08:32:02

1

sunrise085 发表于 2020-5-20 09:55:44

miniArce 发表于 2020-5-20 03:57
谢谢

Are you kidding me?
11楼就是你想要的最佳答案?

可乐加冰i 发表于 2020-5-20 10:06:45

11楼这个...

MIke_python小小 发表于 2020-5-20 10:08:56

恶意评选最佳!!

Mike_python小 发表于 2020-5-20 10:09:10

恶意评选最佳!!

永恒的蓝色梦想 发表于 2020-5-22 09:06:47

荒唐事。

aaron.yang 发表于 2020-5-23 13:10:39

鱼币

nizitao 发表于 2020-5-23 14:50:49

鱼币
页: [1] 2
查看完整版本: 二维数组使用冒泡排序