*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序。这个方法首先按行排序,然后按列排序
题目题目描述破题代码运行实例题目
题目描述
*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序:
public static void sort(int m[][])
这个方法首先按行排序,然后按列排序
例如:数组{{4,2}, {1,7}, {4,5}, {1,2}, {1,1}, {4,1}},被排序为{{1,1}, {1,2}, {1,7}, {4,1}, {4,2}, {4,5}}
破题
这里因为没有要求获取用户输入,所以没必要再从控制台获取,完全可以使用题目中给出的数组{{4,2}, {1,7}, {4,5}, {1,2}, {1,1}, {4,1}}调用方法sort,将原数组传入sort方法:新建一个int[]对象用于临时存储,长度为2sort方法:使用双层for循环,遍历第i1个数组和第i2个数组sort方法:比较数组[i1][0]和[i2][0]数值大小,大于则将两个子数组进行交换sort方法:比较数组[i1][1]和[i2][1]数值大小,大于则将两个子数组进行交换sort方法:输出结果代码
public class Test8_16 {public static void main(String[] args) {//1. 这里因为没有要求获取用户输入,所以没必要再从控制台获取,完全可以使用题目中给出的数组int[][] array = {{4,2}, {1,7}, {4,5}, {1,2}, {1,1}, {4,1}};//2. 调用方法sort,将原数组传入sort(array);}public static void sort(int m[][]){//3. sort方法:新建一个int[]对象用于临时存储,长度为2int[] temp = new int[2];//4. sort方法:使用双层for循环,遍历第i1个数组和第i2个数组for (int i1 = 0 ; i1 < m.length - 1; i1++){for (int i2 = i1 + 1 ; i2 < m.length ; i2++){//5. sort方法:比较数组[i1][0]和[i2][0]数值大小,大于则将两个子数组进行交换if (m[i1][0] > m[i2][0]){//交换temp[0] = m[i1][0];temp[1] = m[i1][1];m[i1][0] = m[i2][0];m[i1][1] = m[i2][1];m[i2][0] = temp[0];m[i2][1] = temp[1];}}}//5. sort方法:比较数组[i1][1]和[i2][1]数值大小,大于则将两个子数组进行交换for (int i1 = 0 ; i1 < m.length - 1; i1++){for (int i2 = i1 + 1 ; i2 < m.length ; i2++){if (m[i1][0] == m[i2][0]){if (m[i1][1] > m[i2][1]){temp[0] = m[i1][0];temp[1] = m[i1][1];m[i1][0] = m[i2][0];m[i1][1] = m[i2][1];m[i2][0] = temp[0];m[i2][1] = temp[1];}}}}//6. sort方法:输出结果for (int i = 0 ; i < 5 ; i++){for (int j = 0 ; j < 2; j++){System.out.print(m[i][j] + " ");}System.out.println();}}}
运行实例
1 1 1 2 1 7 4 1 4 2
Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法 使用下面的方法头对二维数组排序。这个方法首先按行排序 然后按列排序
如果觉得《Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法 使用下面的方法头对二》对你有帮助,请点赞、收藏,并留下你的观点哦!