【编程学习】JAVA玩转数学之二维数组排序

2020年8月12日 10 : 43

长期看我们报纸的读者应该了解了基本的冒泡法或选择法排序,但这都是在一维数组的基础上进行的。今天给大家讲一讲二维数组排序的知识。

首先什么是一维数组呢?一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。类型标识符:数组名[常量表达式]。

二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符:数组名[常量表达式][常量表达式]。

二维数组又称为矩阵,行列数相等的矩阵称为方阵。

对称矩阵a[i][j] = a[j][i]

对角矩阵:n阶方阵对角线外都是零元素

二维数组中的数字以矩阵的方式,"I"代表行数,"J"代表列数,例如图1中a[0][0]就是代表85(如图1)。

今天我们用JAVA处理二维数组从小到大排序。首先在JAVA语言中已经定义了很多可用的方法,比如把数组中的内容打印出来,可以使用Arrays的toString方法,只需要一行直接省略了以往的循环语句就能打印出来。而且JAVA自带排序,使用Arrays.sort方法就可以直接进行数组从小到大的排序。

那么接下来我们需要解决的问题就是,怎样将二维数组进行从小到大的排序。

最容易想到的办法是将二维数组转化为一维数组,这里介绍两种转换方法。

1. 【arraycopy(Object src, int srcPos, Object dest, int destPos, int length)】

src代表原数组;srcPos代表从元数据的起始位置开始;dest代表目标数组;destPos代表目标数组的开始起始位置;length代表要copy的数组的长度。

2. 还有一种比较考验数学能力的方法。二位数组是以数组名[常量表达式][常量表达式]。

相应的转化的公式为num2[i*4+j]=num1[i][j];

这个方法比较通用,需要你有一定的数学基础,转一个思路就肯定可以想出来了(如图2)。

二维数组转成一维数组还是有一定的难度的,适合有编程基础的人,大家也需要努力学习,快乐编程。

代码如图3,运行效果如图4。

 

 


分享到: