好的,所以我有了多维数组“ int Array [3] [4];”因此,例如,我有这样的扫描信息:

2 5 6 4
3 4 8 3
1 8 8 7


所以我需要对每个列进行排序(增长),如下所示:

1 4 6 3
2 5 8 4
3 8 8 7


因此,我想问你如何在不使用指针的情况下对此类多维数组进行排序?以前我使用气泡方法,但是这次我无法使其正常工作...

我的代码示例:

  for(i=0;i<3;i++){
    for(z=i+1;z<4;z++){
        if(Array[i][z-1]>Array[i][z]) {
            int x=Array[i][z-1];
            Array[i][z-1]=Array[i][z];
            Array[i][z]=x;
}
}
}

最佳答案

要比较的元素数为3,因此可以如下。

#include <stdio.h>

int main(void){
    int Array[3][4] = {
        2, 5, 6, 4,
        3, 4, 8, 3,
        1, 8, 8, 7
    };
    int i,j;
    int min, max, mid;
    int min_i, max_i;

    for(i=0;i<4;++i){
        max_i = Array[0][i] < Array[1][i];
        min_i = !max_i;
        if(Array[min_i][i] > Array[2][i])
            min_i = 2;
        if(Array[max_i][i] < Array[2][i])
            max_i = 2;
        max=Array[max_i][i];
        mid=Array[3-max_i-min_i][i];
        min=Array[min_i][i];
        Array[0][i]=min;
        Array[1][i]=mid;
        Array[2][i]=max;
    }
    for(i=0;i<3;++i){
        for(j=0;j<4;++j)
            printf("%d ", Array[i][j]);
        printf("\n");
    }
    return 0;
}

10-08 07:07