数据结构之数组和链表的区别

本文探讨了数组和链表两种数据结构的特点。数组存储区间连续,查询简单但增加删除困难,时间复杂度分别为O(1)和O(n)。链表存储离散,插入删除高效,时间复杂度均为O(1),但查询效率较低,为O(n)。适合快速访问且插入删除少的场景选择数组,反之选择链表。此外,还提到了numpy的arange与python内置range的区别。
摘要由CSDN通过智能技术生成

数组(Array)
一、数组特点:

所谓数组,就是相同数据类型的元素按一定顺序排列的集合;数组的存储区间是连续的,占用内存比较大,故空间复杂的很大。但数组的二分查找时间复杂度小,都是O(1);数组的特点是:查询简单,增加和删除困难;

1.1 在内存中,数组是一块连续的区域

1.2 数组需要预留空间

  在使用前需要提前申请所占内存的大小,如果提前不知道需要的空间大小时,预先申请就可能会浪费内存空间,即数组的空间利用率较低。注:数组的空间在编译阶段就需要进行确定,所以需要提前给出数组空间的大小(在运行阶段是不允许改变的)

1.3 在数组起始位置处,插入数据和删除数据效率低。

插入数据时,待插入位置的元素和他后面的所有元素都需要向后搬移

删除数据时,待删除位置后面的所有元素都需要向前搬移。

1.4 随机访问效率很高,时间复杂度可以达到O(1)

因为数组的内存是连续的,想要访问那个元素,直接从数组的首地址向后偏移就可以访问到了。

1.5 数组开辟的空间,在不够使用的时候需要进行扩容;扩容的话,就涉及到需要把旧数组中的所有元素向新数组中搬移。

1.6 数组的空间是从栈分配的。(栈:先进后出)

二、数组的优点:

随机访问性强,查找速度快,时间复杂度是0(1)

三、数组的缺点:

3.1 从头部删除、从头部插入的效率低,时间复杂度是o(n),因为需要相应的向前搬移和向后搬移。

3.2 空间利用率不高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值