Java基础第七天总结——数组
目录:
一、数组中常见的算法
二、Arrays工具类的使用
三、数组使用中的常见异常
/*--------------------黄金分割线------------------*/
一、数组中常见的算法
1. 数组元素的赋值(杨辉三角、回形数等)
2. 求数值型数组中元素的最大值、最小值、平均数、总和等
3. 数组的复制、反转、查找(线性查找、二分法查找)
4. 数组元素的排序算法
数组的复制:
方法:遍历、赋值arr[i] = arr1[i];实现真正的复制
arr = arr1;
arr和arr1存的地址值相同,都指向了堆空间的唯一的一个数组实体。所以arr内元素变化(实际是数组对象在内存中发生了变化),打印出的arr1依旧是指向的同一个数组。
arr和arr1存的地址值相同,都指向了堆空间的唯一的一个数组实体。所以arr内元素变化(实际是数组对象在内存中发生了变化),打印出的arr1依旧是指向的同一个数组。
数组元素的赋值:
arr[0] = arr1[0];对数组元素的赋值。
数组的反转:
方法:遍历、再交换头尾关键字;
数组的查找:
方法一:遍历、一一对应查找;
注:除了基本数据类型的变量,实际操作都是对内存中的实体进行操作。基本数据类型传的是实际值,引用数据类型传的是对象的地址值。
线性查找的思想:
1.在给定的一列值中,进行顺序查找,从头到尾进行对比查找。
确认要查找的元素,遍历数组,如果.equals()内容相等,则为找到,break;如无相等内容,则为未找到。
二分法查找的思想:
1.必须为有序数组
2.确定所需查找的关键字,定义初索引,末索引。定义一个中间关键字middle。定义一个循环结构:将表中间的关键字middle与要查找的关键字进行对比,如果相等则取middle,break;否则将表分为前后两个子表,如果所查关键字大于中间关键字middle,则在对比前一子表的中间的关键字middle,此时末索引则为middle - 1;如果小于middle,则再查后一子表的中间关键子middle。此时初索引为middle + 1;以此循环找到middle和所需要查的关键子相等即可。
备注:定义一个boolean isFlag = true,在for循环外根据isFlag的结果输出未找到。
数组元素的排序算法:
排序算法分类:内部排序和外部排序
内部排序:不借助外部存储,排序操作直接在内存中完成
外部排序:借助外部存储,数据量大,可以认为外部排序是由多次内部排序组成的。
十大内部排序算法:
算法的5大特征:
冒泡排序的排序思想:
1.比较相邻的两个数,如果第一个比第二个大,则交换。(升序)
2.对每一对相邻元素进行对比,最后的元素为最大的数。
3.重复以上操作,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤。
快速排序的排序思想:
1.正式开发中常见的排序方法。
2.在数列中挑一个元素,称为“基准”。
3.定义一个low和high,比较这个基准,当发现有比基准小的数放前面,比这个基准大放在后面。当low和high相交的时候,low和这个基数交换。则基数左边为小于基数,右边为大于基数。
二、Arrays工具类的使用
java.util.Arrays类即为操作数组的工具类,包含用来操作数组(如排序和搜索)的各种方法。
三、数组使用中的常见异常
1.数组角标越界异常(ArrayIndexOutOfBoundsException)
访问到数组中的不存在的角标时发生
2.空指针异常(NullPointerException)正式开发中比较常见
引用没有指向实体,却在操作实体中的元素时。