我试图在二维数组上实现冒泡排序,将行按升序排列,但它只是移动第一项。我怎样才能解决这个问题?
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;
}
}
}
}
关于java - java 二维数组升序冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25735217/