美文网首页云莉的技术专题
数组、链表、跳表

数组、链表、跳表

作者: 云莉6 | 来源:发表于2020-03-05 21:12 被阅读0次

    Array(数组)

    Array 增加、删除元素,需要挪动平均一半数组长度的元素,所以,对于 Array 来说,增删慢。但 Array 可以随意访问到任意元素,查询速度很快。

    image.png

    Linked List(链表)

    Linked List 增加、删除元素,因为只需要改变 next 指针,增删不需要大量挪动链表中的元素
    ,所以,增删很快,但想找到一个元素必须从头结点或者尾结点一个一个的都查找一遍才能找到目标元素,查询速度就慢了。

    Double Linked List 时间复杂度

    image.png

    Skip List(跳表)

    为了解决链表查询速度慢的缺陷。

    添加一级索引、二级索引、多级索引:

    image.png

    跳表时间复杂度为 O(logn) 。

    image.png image.png

    现实中因为链表元素的增删频繁变化,索引要随着每次的增删进行维护,所以,现实中的索引可能是不规整的,有的跳 2 步,有的可能跳 3 步。

    image.png

    跳表是在链表的基础上根据升维思想和空间换时间的手法,所以,跳表相对于链表的空间复杂度增加了,为 O(n)。

    image.png

    工程中的应用:

    参考链接:

    相关文章

      网友评论

        本文标题:数组、链表、跳表

        本文链接:https://www.haomeiwen.com/subject/jmwhrhtx.html