2014-11-04 23 views
-1

我要從一端到另一端對[3] [3]矩陣進行排序!從一端到另一端對矩陣[3] [3]排序

可以說我有以下

6 7 1 
2 0 4 
7 9 2 

排序它應該看起來像 - >

0 1 2 
2 4 6 
7 7 9 

但是我似乎沒有搞清楚如何正確地解決這..即時通訊使用泡沫排序,但只能設法一次排序一行!

我應該將矩陣轉換爲單行數組嗎?

這是我有:

for (int j = 0; j < 10; j++) 
    { 

    for (int i = 0; i < 2; i++) 
    { 

    for (int k = 0; k < 2; k++) 
    { 
    if(a[i][k + 1] < a[i][k]) 
     { 
     double temp = a[i][k]; 
     a[i][k] = a[i][k + 1]; 
     a[i][k + 1] = temp; 
     } 
    } 
    } 
    } 
+0

爲什麼不對所有元素進行排序並將其放回矩陣形式? – amudhan3093 2014-11-04 06:27:59

+0

嗯是啊!這是一種可能性..但是我應該在一個方法中進行排序:S,所以我認爲這樣做並不正確。 – Avacay 2014-11-04 06:30:37

+0

您並未將上一行的最後一個元素與下一行的第一個元素進行排序。 – 2014-11-04 08:13:19

回答

0

這種類型的所有元素,並把它放回矩陣。我知道你不想那樣。但是如果有人需要它的話我會發布它。

public static int[][] sort(int[][] x) { 
     ArrayList<Integer> a = new ArrayList<>(); 
     for (int i = 0; i < 3; i++) { 
      for (int j = 0; j < 3; j++) { 
       a.add(x[i][j]); 

      } 
     } 

     Collections.sort(a); 

     int k = 0; 
     for (int i = 0; i < 3; i++) { 
      for (int j = 0; j < 3; j++) { 
       x[i][j] = a.get(k); 
       k++; 
      } 
     } 

     return x; 
    }