c - 如何对二维数组中的行和列使用一个函数?

标签 c arrays sorting

假设我有一个一维数组的排序函数

void sort(int a[], int n){
    int temp;
    for (int i = 0; i < n; i++){
       for (int j = i + 1; j < n; j++){
           if (a[i] > a[j]){
               temp = a[j];
               a[j] = a[i];
               a[i] = temp;
           }
       }
   }
}

我知道如何让它对二维数组的所有行进行排序:

for (i = 0; i < n; i++)
       sort(b[i], m); // b is 2d array n - rows m - columns

但我想知道我必须更改什么才能使用相同函数对列进行排序?

最佳答案

您可以通过传递额外参数来修改排序函数以遍历列:

void sort(int a[n][m], int n, int col_index){
    int temp;
    for (int i = 0; i < n; i++){
       for (int j = i + 1; j < n; j++){
           if (a[i][col_index] > a[j][col_index]){
               temp = a[j][col_index];
               a[j][col_index] = a[i][col_index];
               a[i][col_index] = temp;
           }
       }
   }
}

然后执行如下

for(int i=0;i<m;i++){
    sort(b,n,i);
}

希望这有帮助。

关于c - 如何对二维数组中的行和列使用一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50362446/

相关文章:

c - 在 C 中打开 .ts 文件并一点一点地读取流文件的内容

c - 如果 C 只能返回一个值(int、char 等),那么它如何返回字符串文字(字符数组)?

c - 在 C 中实现椭圆方程的正确方法是什么?

python - 在Python3中逐一读取列表的元素

linux - Linux命令 'tree'如何按文件类型排序?

c - 使用 scanf 获取小数

c++为什么数组没有长度属性

java - 使用 Jackson 将名称值对数组反序列化为对象

java - 不确定为什么 Java mergesort 算法偶尔会失败

ruby - 你如何在 ruby​​ 中对多种类型进行排序?