ui培训学校哪家好/襄阳seo优化排名
Java编程入门与应用 P198-成长任务2:对二维数组进行排序
- 假设一个二维数组,其中的数据排列如下所示:
- 9 7 1 1
- 1 5 0 5
- 2 4 7 3
- 3 6 4 8
- 现要编写程序实现按第一个数对每一行进行排序,达到以下效果:
- 1 5 0 5
- 2 4 7 3
- 3 6 4 8
- 9 7 1 1
- 本程序,采用选择插入法体现在二维数组的运用
/*** Java编程入门与应用 P198-成长任务2:对二维数组进行排序** 假设一个二维数组,其中的数据排列如下所示:** 9 7 1 1* 1 5 0 5* 2 4 7 3* 3 6 4 8** 现要编写程序实现按第一个数对每一行进行排序,达到以下效果:** 1 5 0 5* 2 4 7 3* 3 6 4 8* 9 7 1 1** 本程序,采用选择插入法体现在二维数组的运用*/public class arraySort {public static void main(String[] args) {//构建一个二维数组int[][] array = {{9, 7, 1, 1}, {1, 5, 0, 5}, {2, 4, 7, 3}, {3, 6, 4, 8}};//输出初始化的二维数组System.out.println("初始二维数组是:");for(int i = 0; i < array.length; i++){for(int j = 0; j < array[i].length; j++){System.out.print(array[i][j] + " ");}System.out.println();}//比较大小,并排序//默认最大值为数组第一个元素int max, address = 0;//定义临时操作的一维数组,用于存放需要变换的值int[] temp;//开始寻找二维数组中列值最大的数,并记录下其下标位置for(int i = 0; i < array.length; i++){//始终最大值默认为数组第一个元素max = array[0][0];//开始寻找列值最大数的下标for(int k = 0; k < array.length - i; k++){if(max < array[k][0]){max = array[k][0];address = k;}}//进行替换,将最大值放入到二维数组的最后一行,先将未排序的最后一行一维数组复制到临时数组中temp = array[array.length - 1 - i].clone();//将一找到的最大值列复制到未排序的最后一列array[array.length - 1 - i] = array[address].clone();//之前未排序的最后一列复制到未排序前最大列的位置array[address] = temp.clone();}//输出排序后的数据System.out.println("排序后的二维数组是:");for(int i = 0; i < array.length; i++){for(int j = 0; j < array[i].length; j++){System.out.print(array[i][j] + " ");}System.out.println();}}
}
结果:
初始二维数组是:
9 7 1 1
1 5 0 5
2 4 7 3
3 6 4 8
排序后的二维数组是:
1 5 0 5
2 4 7 3
3 6 4 8
9 7 1 1 进程已结束,退出代码为 0
核心算法:
用意:将每一列的第一个数进行比较(题目要求只需要第一列第一个数),然后记录最大的数在第几列,然后将该列的值通过!选择排序法!进行替换。
//比较大小,并排序//默认最大值为数组第一个元素int max, address = 0;//定义临时操作的一维数组,用于存放需要变换的值int[] temp;//开始寻找二维数组中列值最大的数,并记录下其下标位置for(int i = 0; i < array.length; i++){//始终最大值默认为数组第一个元素max = array[0][0];//开始寻找列值最大数的下标for(int k = 0; k < array.length - i; k++){if(max < array[k][0]){max = array[k][0];address = k;}}//进行替换,将最大值放入到二维数组的最后一行,先将未排序的最后一行一维数组复制到临时数组中temp = array[array.length - 1 - i].clone();//将一找到的最大值列复制到未排序的最后一列array[array.length - 1 - i] = array[address].clone();//之前未排序的最后一列复制到未排序前最大列的位置array[address] = temp.clone();}
感谢观看
再次感谢~