Skip to content

Latest commit

 

History

History
 
 

README.md

1、数组

在内存中是一段连续的存储空间。

数组操作的时间复杂度分析

insert: O(n) --> 最坏情况下,需要将整个数组向后移动一位

delete: O(n) --> 最坏情况下,删除第一位元素,需要将第一位元素之后的所有元素往前移动一位

update: O(1) --> 因为是连续的内存结构,因此可以直接定位到指定下标的元素,然后更新

query: O(1)

2、链表

不是一段连续的存储空间。

链表的时间复杂度分析

insert: O(1)

delete: O(1)

update: O(1) --> 增、删、改时间复杂度为 O(1),前提是已经知道目标节点,不考虑查找的情况。增删只需操作链表的前驱节点,后驱节点。

query: O(n) --> 需要从头节点,依次往后查找。最快情况下,目标元素恰好是最后一位元素。

3、跳表

跳表的作用是为了,加速普通链表的查询速度,它要求链表本身是有序的。

原理是通过在原始的链表基础上添加一级、二级等等索引,通过查询索引的方式快速定位到目标元素。 应用到的核心思想就是:“空间换时间”

查询的时间复杂度为 O(logn)

特点:先进后出,可采用数组,链表基础数据结构来实现。

增、删的时间复杂度为 O(1)

查询的时间复杂度为 O(n)

队列

特点: 先进先出,可采用数组,链表基础数据结构来实现。

增、删的时间复杂度为 O(1)

查询的时间复杂度为 O(n)

双端队列

两端都可以进出的队列。

增、删的时间复杂度为 O(1)

查询的时间复杂度为 O(n)