2014-11-04 32 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; 
    } 
相关问题