七日算法先导(一)—— 数组
概念
1. 顺序存储
顺序存储结构,指用一段地址连续的存储单元依次存储线性表的数据元素
2. 存储方式
第一个元素存储到下标为 0 的位置中,第二个元素存储到下标为 1 的位置中,以此类推
3. 长度和容量
数组的长度指代的是数组中当前有多少个元素,数组的容量指代的是数组中 MAX 存储多少个元素
注意数组越界的问题,Java 中的数组是固定长度
如何获取数组长度,以 Java 语言为例:
public class Main { public static void main(String[] args) { int[] a = new int[10]; System.out.println(a.length);//数组长度为10 } }
基本操作
索引
用数组下标找数组元素的过程
复制代码
其中[]中的值必须为非负数,并且要小于数组的长度
时间复杂度为 O(1)
查找
用数组元素找数组下标的过程
通过遍历整个数组的方式来查找,时间复杂度为 O(n)
复制代码
遍历这个数组
对数组元素与 target 进行比较,人工相等返回对应数据的下标
当 i>a.length 时候,还找不到,表明数组中不存在这个元素,直接返回-1
插入
在第 k 个元素前进行插入一个数,由于数组是连续的,那么从 k 个元素往后的元素都必须往后移动一位,当 k=0 时,所有元素都要往后移动,所以最坏时间复杂度为 O(n)
复制代码
删除
将数组的第 k 个元素删除,由于数组是连续的,那么第 k 个元素删除,往后的元素势必要往前移动一位,当 k = 0 时候,所有元素都要往前移动,所有最坏时间复杂度为 O(n)
复制代码
相信大家都发现了,在插入和删除操作中,我都使用了构建新数组的方式来进行操作,Java 中数组是固定长度的,无法直接进行操作
刷题巩固
版权声明: 本文为 InfoQ 作者【秋名山码民】的原创文章。
原文链接:【http://xie.infoq.cn/article/64d3d65b9ae22145f00934171】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论