2014-11-22 90 views
-1

好的,所以我有多維數組「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; 
} 
} 
} 
+0

泡泡排序應該在這裏工作,所以你一定在做別的錯誤。我們不知道是什麼。 – usr2564301 2014-11-22 10:57:46

+0

發佈您到目前爲止所嘗試的內容,並解釋您遇到困難的位置 – 2014-11-22 10:58:12

+0

剛更新了我的帖子,我沒有得到的是如何按列排序 – lemilo13 2014-11-22 11:12:52

回答

0

元素比較的數量是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; 
}