String[][] 2dArray = new String[counter][2];
2dArray [counter][column1] = String.valueOf(counter);
2dArray [counter][column2] = "something something something";
for(int i = 0; i < 2dArray.length-1; i++){
for(int j = i + 1; j > 0; j--){
if(2dArray[i][j] < 2dArray[i-1][j]){
int[][] temp = 2dArray[i-1][j];
2dArray[i-1][j] = 2dArray[i][j];
2dArray[i][j] = temp;
}
}
}
试图使得列1上升数组进行排序。 我已经研究了这里的其他参考资料和mimic'd他们,但由于某种原因,我的IDE不喜欢上面的...
如果我理解正确的话,我建议如下:
什么,你需要做的是比较Integer
数组的值:
if(Integer.valueOf(2dArray[i][0]) < Integer.valueOf(2dArray[i-1][0])){
你不包括的原因j
是因为你只在第一列的值排序。 2dArray[i][0]
让你你的价值counter
在那个特定行。
我也看到了你的代码,可以使用固定一些其他的东西:
for(int i = 0; i < 2dArray.length; i++){
for(int j = i; j < 2dArray.length; j++){
if(Integer.valueOf(2dArray[j][0]) > Integer.valueOf(2dArray[j+1][0])){
String temp[] = 2dArray[j+1];
2dArray[j+1] = 2dArray[j];
2dArray[j] = temp;
}
}
}
这是更符合我觉得什么是经典的实现冒泡的:
private static void bubblesort(Integer[] array) {
for (int i = 0; i < array.length; i++) {
for(int j = 0; j < array.length - 1; j++) {
if(array[j].compareTo(array[j+1]) > 0) {
swap(j, j+1, array);
}
}
}
}
private static void swap(Integer index1, Integer index2, Integer[] array) {
if(index1 == index2)return;
Integer temp = new Integer(array[index2]);
array[index2] = array[index1];
array[index1] = temp;
}
除非你的情况,我是治疗你的数组作为一维的,因为你只用一个维度排序。
如果2dArray是二维字符串数组像
String[][] 2dArray
然后这两个字符串可以使用比较
if(2dArray[i][j].compareTo(2dArray[i-1][j]) > 0)
这是否也是解决这个问题?
for (int i = 0; i < 2dArray.length-1; i++){
for(int j = 0; j < 2dArray.length-1; j++){
if(2dArray[j][0].compareTo(2dArray[j+1][0])>0){
String[] temp = 2dArray[j];
2dArray[j] = 2dArray[j+1];
2dArray[j+1] = temp;
}
}
}
for(int i=0;i<2dArray.length-2;i++){
for(int j=0;j<2dArray[i].length-1;j++){
if(2dArray[i][j]>2dArray[i+1][j]){
int temp=2dArray[i][j];
2dArray[i][j]=2dArray[i+1][j];
2dArray[i+1][j]=temp;
}
}
}
char[][] temp = 2dArray[i-1][j];
您的IDE不喜欢你(120%),当你把一个char / INT / ...(每第一个响应)到二维字符数组。