数据结构——线性表:数组

线性表

线性表就是数据排成一条线一样的结构,数据只有前后两个方向。

一、数组

概念
数组:有限个 相同类型的变量所组成的 有序 集合。数组下标从0开始。
存储原理
数组用一组 连续的内存空间 来存储一组具有 相同类型的 数据。
数组可以根据下表随机访问数据。
随机元素寻址:a[i]_address=a[0]_address+i*4(int是4字节(32位),实际内存储是位)
体现三个方面:
连续性分配;相同的类型,下标从0开始
操作
读取和更新可以随机访问,时间复杂度为O(1)
插入
在数据的实际元素数量小于数组长度时,
尾部插入
直接把插入元素放在数组尾部的空闲位置
中间插入
首先把插入位置以及后面的元素向后移动,腾出地方,再把要插入的元素放到对应的数组位置上
在数组已满或者插入元素越界时,要对原数组扩容
超范围插入
创建一个新数组,长度是旧数组的2倍,再把旧数组中地元素统统复制,让后进行插入操作
删除元素
如果删除的元素在数组中间,其后元素都需要向前挪动一位
时间复杂度
读取和更新都是随机访问,所以是O(1)
插入数组扩容和移动元素都是O(n)
删除操作,只涉及元素的移动,时间复杂度是O(n)
优点
数组拥有高效随机范围能力,只要给下标就可以用常量时间找到对应元素
缺点
插入删除元素方法,由于数组元素连续紧密存储在内存中,插入和删除会导致大量元素移动影响效率
申请空间必须是连续的,就是即使有空间也可能因为没有足够连续的空间而创建失败
如果超出范围,需要重新申请内存进行存储,原空间就浪费了
应用
ArrayList,Redis,消息队列等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值