2014-11-04 2 views
-1

Im собираюсь сортировать матрицу [3] [3] с одного конца на другой!Сортировочная матрица [3] [3] от одного конца до другого

позволяет сказать, что я следующий

6 7 1 
2 0 4 
7 9 2 

Сортировано это должно выглядеть ->

0 1 2 
2 4 6 
7 7 9 

Однако я, кажется, не понять, как правильно сортировать это .. Im, используя пузырь сортировать, но могут сортировать только одну строку за раз!

Следует ли преобразовать матрицу в массив с одной строкой?

Это то, что я есть:

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

+0

Хмм да! это возможность. Однако я должен выполнить сортировку в методе: S, поэтому я считаю, что это неправильно, чтобы сделать это так. – Avacay

+0

Вы не сортируете последний элемент предыдущей строки с первым элементом следующей строки. –

ответ

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; 
    } 
Смежные вопросы