二维数组排序

Future4497 Future4497 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
/*基本思路就是将二维数组转换成一维数组,再对一维数组进行冒泡排序, 再将排好序的一维数组转换成二维数组 ,最后按照两行三列的格式输出即可。难点就是在于 数组间的转换问题*/ #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");       }  } }
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
Future4497
C语言 70,039 成员 243,237 内容