二维数组排序

Future4497 2019-10-17 11:45:35
/*基本思路就是将二维数组转换成一维数组,再对一维数组进行冒泡排序, 再将排好序的一维数组转换成二维数组 ,最后按照两行三列的格式输出即可。难点就是在于 数组间的转换问题*/ #include <stdio.h> main() {  int a[2][3]={3,2,1,6,5,4};  int i,j,k,b[6];  int temp;  int y,z;  //一维数组转换成二维数组时候用到   k=0; //初始化 k 的值     //转换为一维数组   for(i=0;i<2;i++)  {       for(j=0;j<3;j++)       {            b[k]=a[i][j];            k++;        }  }  //对一维数组 b[6] 进行冒泡排序  for(j=0;j<5;j++)  {       for(i=0;i<5-j;i++)       {            if(b[i]>b[i+1])            {                 temp=b[i];                 b[i]=b[i+1];                 b[i+1]=temp;            }       }  }  //再将排好序的一维数组 b[6]转换成二维数组 a[2][3],并按一定格式输出   //重新定义一个变量 y  z,是为了避免变量之间的冲突   for(y=0;y<2;y++)  {       for(z=0;z<3;z++)       {            a[y][z]=b[y*3+z];    //这一步要好好理解,为什么是 y*3+z ?很关键的一步        }  }  //输出 两行三列的二维数组   for(i=1;i<=2;i++)  {       for(j=1;j<=3;j++)       {            printf("%3d",a[i-1][j-1]);            if(j%3==0)      //当满足每行三个数时就换行                  printf("\n");       }  } }
...全文
53 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrs_1023 2019-10-17
  • 打赏
  • 举报
回复
因为一行有3个元素,y=0时,取b[0],b[1],b[2]; y=1时,取b[3],b[4],b[5]

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧