问题为Java实现二维数组排序
import java.util.Arrays;
public class java {
public static void main(String[] args){
int[][] m=new int[][]{{4,5},{1,7},{4,2},{1,2},{1,1},{4,1}};
sort(m);
for (int i=0;iout.print(Arrays.toString(m[i]));
}
public static void sort(int[][] array){
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if (large(array[j],array[j + 1])) {
int[] temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
public static boolean large(int[] a,int[] b) {
if (a.length > b.length)
return true;
else if (b.length > a.length)
return false;
else {
for (int i=0;iif (a[i]>b[i]) {
return true;
}
}
}
return false;
}
}
运行结果应该是将这个二维数组由小到大排序
但结果为这个:
[1, 1][4, 1][1, 2][4, 2][1, 7][4, 5]
进程已结束,退出代码0
我也不知道哪里出了毛病请求帮我修改一下代码,预期结果应该是[1, 1][1,7][1, 2][4, 1][4,2][4, 5]
代码如下:
import java.util.Arrays;
public class java {
public static void main(String[] args) {
int[][] m = new int[][] { { 4, 5 }, { 1, 7 }, { 4, 2 }, { 1, 2 },
{ 1, 1 }, { 4, 1 } };
sort(m);
for (int i = 0; i < m.length; i++)
System.out.print(Arrays.toString(m[i]));
}
public static void sort(int[][] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = 0; j < array.length - 1 - i; j++) {
if (large(array[j], array[j + 1])) {
int[] temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
public static boolean large(int[] a, int[] b) {
if (a.length > b.length)
return true;
else if (b.length > a.length)
return false;
else {
for (int i = 0; i < a.length; i++) {
if (a[0] < b[0]) {
return false;
}
if (a[i] > b[i]) {
return true;
}
}
}
return false;
}
}
运行效果:
class test {
public static void main(String[] args){
int[][] m=new int[][]{{4,5},{1,7},{4,2},{1,2},{1,1},{4,1}};
sort(m);
for (int i=0;i<m.length;i++)
System.out.print(Arrays.toString(m[i]));
}
public static void sort(int[][] array){
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if (large(array[j],array[j + 1])) {
int[] temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
public static boolean large(int[] a,int[] b) {
if (a.length > b.length)
return true;
else if (b.length > a.length)
return false;
else {
for (int i=0;i<a.length;i++){
if(a[0]<b[0]){
return false;
}
if (a[i]>b[i]) {
return true;
}
}
}
return false;
}
}