多维数组
什么是多维数组
简单来说,就是在一个数组中,又包含了多个数组,多个数组中,每个数组中,又包含了多个数组,依次类推;
简单写个二维数组表示下:
int [][] a= new int [3] [];
定义了一个二维数组,这个二维数组的长度是3,简单来说,就是数组中还引用了三个数组,
二维数组的声明,
类似一位数组,可以直接静态声明,或者动态创建
这是一个动态声明:
int [] [] a = new int [3] [];
a[0] = new int [2]; //在a数组0下标的位置,又创建了一个int类型的数组,长度是2
a[1] = new int [4]; //在a数组1下标的位置,又创建了一个int类型的数组,长度是4
a[2] = new int [3]; //在a数组2下标的位置,又创建了一个int类型的数组,长度是3
这是一个静态声明:
int [] [] a = { { 1, 2, 3 }, { 3, 4 }, { 3, 5, 6, 7 } };直接在创建了一个二维数组,包含三个一维数组,分别是数组1{1,2,3}数组2 { 3, 4 }, 数组3{ 3, 5, 6, 7 }
怎么查看数组中的内容?
利用for循环嵌套或者foreach循环嵌套
数组的内存关系
数组存储表格数据
表格数据模型是计算机世界最普遍的模型,可以这么说,大家在互联网上看到的所有数据本质上都是“表格”,无非是表格之间互相套用。
数组的拷贝
数组拷贝,有多重方法
1>可以通过==:但==等于是直接引用的地址,使用==赋值后,被赋值的数组的长度,数组的内容,地址都等于赋值过来的数组;
2>通过system.arraycopy进行赋值;
System.arraycopy(c, 0, d, 0, 4);
(拷贝数组,起始下标,目的数组,起始下标,拷贝长度),此方法是对数组内的值进行拷贝赋值
3>通过循环遍历,依次获得数组的值,一一对照进行赋值;
JDK提供的java.util.Arrays类,
包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。
冒泡排序的基础算法
* 实现的理论
* 从第一个数字跟右边相邻的比较,如果大于右边数字,就进行调换,依次进行比较,直到比出最大值,
* 再返回第一个数字,重复进行比较,找第二大的数,依次类推,直到找到最小的数,就完成了排序;
此算法还有优化版本
二分法查找
二分法检索(binary
search)又称折半检索,二分法检索的基本思想是设数组中的元素从小到大有序地存放在数组(array)中,首先将给定值key与数组中间位置上元素的关键码(key)比较,如果相等,则检索成功;
否则,若key小,则在数组前半部分中继续进行二分法检索;
若key大,则在数组后半部分中继续进行二分法检索。
这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。
二分法检索是一种效率较高的检索方法。