一、多维数组:
多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组。
1.二维数组:
(1)二维数组定义:
二维数组就是存储一维数组(内存地址/引用)的数组;
(2)二维数组声明与初始化:
1)int [ ][ ] a=new int [3][3];
2) int[ ][ ] a = { { 1, 2, 3 }, { 3, 4 }, { 3, 5, 6, 7 } };
3)int [ ][ ] a=new int[3][ ];
a[0] = new int[2];
a[1] = new int[4];
a[2] = new int[3];
(3)二维数组的遍历:
1)普通for循环;
2)加强for循环;
3)普通for循环+加强for循环;
(4)内存分析:
(5)对象数组存储表格数据:
数组可以存基本数据类型,也可以存储引用数据类型。
2.数组的拷贝:
1)地址拷贝;
2)值拷贝;
3)System类中数组拷贝的方法:arraycopy (Object src, int srcPos, Object dest, int destPos, int length);
二、java.util.Arrys工具类:
Arrays工具类:包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
1.常用的工具类:
1)toString()打印数组;
2)equals()比较两个数组是否相同;
3)copyOf(…)复制指定的数组 (效率低,开辟空间;
4)fill(…) 将指定的 int 值分配给指定 int 型数组的每个元素;
5)sort(…)数组排序 升序排序(排序的对象具备比较大小的能力);
三、冒泡排序与二分法:
1.冒泡排序:
算法重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,这样越大的元素会经由交换慢慢“浮”到数列的顶端。
(2)冒泡排序法优化:
每一趟比较都要比较到数组的最后,没有必要,只要比较到无序数列即可;
2.二分法查找:
二分法检索(binary search)又称折半检索,二分法检索的基本思想是设数组中的元素从小到大有序地存放在数组(array)中,
首先将给定值key与数组中间位置上元素的关键码(key)比较,如果相等,则检索成功;
否则,若key小,则在数组前半部分中继续进行二分法检索;
若key大,则在数组后半部分中继续进行二分法检索。