2014-09-09 2 views
0

Я пытаюсь реализовать сортировку пузырьков в 2D-массиве, чтобы поместить строки в порядке возрастания, но только перемещает первый элемент. Как я могу это исправить?2d array ascending bubblesort java

for(int i = 0; i<differencearray.length; i++){ 
     for(int j = 0; j<differencearray[i].length-1; j++){ 
      if(differencearray[i][j]>differencearray[i][j+1]){ 
       int temp = differencearray[i][j]; 
       differencearray[i][j] = differencearray[i][j+1]; 
       differencearray[i][j+1] = temp; 
       } 
     } 
    } 

вход является:

2147483647 15 9 13 24 

15 2147483647 18 16 17 

9 18 2147483647 12 27 

13 16 12 2147483647 25 

24 17 27 25 2147483647 

Выход:

15 9 13 24 2147483647 

15 18 16 17 2147483647 

9 18 12 27 2147483647 

13 12 16 25 2147483647 

17 24 25 27 2147483647 

Любая помощь будет здорово!

ответ

2

Bubble sort - это алгоритм O(n^2), поэтому вам нужно 2 для циклов для одного массива.

Если у вас есть n массивов, вам понадобится 3 для циклов, чтобы отсортировать все строки.

Это делает его O(n^2*m) алгоритмом. (Где т количество строк)

Тааак ...

for(int i = 0; i < rowCount; i++){ 
    for(int j = 0; j < colCount; j++){ 
    for(int k = 0; k < colCount; k++){ 
     if(differencearray[i][k]>differencearray[i][k+1]){ 
      int temp = differencearray[i][k]; 
      differencearray[i][k] = differencearray[i][k+1]; 
      differencearray[i][k+1] = temp; 
     } 

    } 
    } 
} 
+0

+1: правильный и краткий. @Jay избили меня до этого: P – nem035

+0

дает мне исключение arrayindexoutofbounds –

+0

@KhushalChouhan Тогда один из ваших подсчетов неверен. Либо rowCount, либо colCount больше, чем массив, с которым вы его используете. – Jay