【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;
}
代码解释
-
数组定义与输入:首先定义了一个4行5列的二维数组
a[4][5]
,并使用嵌套循环读取用户输入的20个整数。 -
排序逻辑:使用三重循环对数组的每一列进行冒泡排序。外层循环遍历每一列,中间循环控制排序的行数,内层循环进行冒泡排序的比较和交换操作。
-
输出结果:最后,使用嵌套循环遍历并打印排序后的二维数组。
注意事项
- 在排序逻辑中,内层循环的上限应该是
4-k-1
,因为数组下标从0开始,且每完成一次排序,最大的元素会被放置在正确的位置,不需要再次参与比较。 - 比较和交换操作应该针对同一列的元素进行,即
a[m][i]
和a[m+1][i]
。
原文地址:https://blog.csdn.net/weixin_49345320/article/details/143791595
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!