我正在尝试在2D数组上实现冒泡排序,以将行按升序排列,但它仅移动了第一项。我怎样才能解决这个问题?

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


任何帮助将是巨大的!

最佳答案

冒泡排序是一种O(n^2)算法,因此单个数组需要2个for循环。

如果您有n个数组,则需要3个for循环才能对所有行进行排序。

这使其成为O(n^2*m)算法。 (其中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;
       }

     }
   }
 }

10-06 02:12