2016-07-08 2 views
3

バブルソートを使用して2D配列をソートして、新しくソートされた配列を印刷しようとしています。これは私がこれまで持っているものです。バブルソートを使用して2D配列の行をソートして印刷する関数を作成しようとしています

void sort_2Darray(int x[][MAX],int size) 
{ 
    int i; 
    int j; 
    int hold; 
    int pass; 

    for(pass=1;pass<size;pass++) 
    { 
    for(i=0;i<size;i++) 
    { 
     for(j=0;j<size;j++) 
     { 
     if(x[i][j]>x[i][j+1]) 
     { 
      hold=x[i][j]; 
      x[i][j]=x[i][j+1]; 
      x[i]j+1]=hold; 
     } 
     } 
    } 
    for(i=0;i<size;i++) 
    { 
     for(j=0;j<size;j++) 
     { 
     printf("%2d", x[i][j]); 
     } 
     printf("\n"); 
    } 
    } 
} 

そして、これは、サイズ== 4

ソートする前に、ときに出力しますものです:

0 3 6 6 
2 9 7 0 
4 1 1 1 
7 0 2 6 

それは、この4回印刷した後、

0 3 6 6 
2 7 0 0 
1 1 1 4 
0 2 6 -352439155 
+0

問題が何ですか。期待されるものは何ですか? –

+0

ここに質問がありますか? –

+3

'j 'が' size - 1'と等しいとき、インデックス 'j + 1'はどうなると思いますか? –

答えて

1
for(pass=0;pass<size;pass++) 
{ 
    for(i=0;i<(size-1);i++) 
    { 
    for(j=0;j<(size-i-1);j++) 
    { 
     if(x[pass][j]>x[pass][j+1]) 
     { 
     hold=x[pass][j]; 
     x[pass][j]=x[pass][j+1]; 
     x[pass][j+1]=hold; 
     } 
    } 
    } 

私はこれをテストしていませんコードが、これは正しく動作し、仕事をする必要があります、と私は思います。

動作しない場合は、報告してください。

関連する問題