欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 【C语言】实现二维数组按行排序

【C语言】实现二维数组按行排序

2024/11/15 13:10:00 来源:https://blog.csdn.net/weixin_49345320/article/details/143791595  浏览:    关键词:【C语言】实现二维数组按行排序

文章目录

    • 代码实现
    • 代码解释
    • 注意事项


代码实现

下面是一个简单的C语言程序,它读取用户输入的4行5列的二维数组,并按照列对数组进行排序。

#include <stdio.h>int main() {int a[4][5];// 读取用户输入的二维数组for (int i = 0; i < 4; i++) {for (int j = 0; j < 5; j++) {scanf("%d", &a[i][j]);}}// 按照列对数组进行排序for(int i=0; i<4; i++){for(int k=0; k<4; k++){ // 注意这里的循环条件应该是k<4,因为数组下标从0开始for(int m=0; m<4-k-1; m++){ // 内层循环应该使用4-k-1作为上限,以避免重复交换if(a[m][i] > a[m+1][i]){ // 比较同一列的元素int t = a[m][i];a[m][i] = a[m+1][i];a[m+1][i] = t;}}}}// 输出排序后的数组printf("\n按照列排序之后:.....\n");for (int i = 0; i < 4; i++) {for (int j = 0; j < 5; j++) {printf("%d ", a[i][j]);}printf("\n");}return 0;
}

代码解释

  1. 数组定义与输入:首先定义了一个4行5列的二维数组a[4][5],并使用嵌套循环读取用户输入的20个整数。

  2. 排序逻辑:使用三重循环对数组的每一列进行冒泡排序。外层循环遍历每一列,中间循环控制排序的行数,内层循环进行冒泡排序的比较和交换操作。

  3. 输出结果:最后,使用嵌套循环遍历并打印排序后的二维数组。

注意事项

  • 在排序逻辑中,内层循环的上限应该是4-k-1,因为数组下标从0开始,且每完成一次排序,最大的元素会被放置在正确的位置,不需要再次参与比较。
  • 比较和交换操作应该针对同一列的元素进行,即a[m][i]a[m+1][i]
    在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com