美文网首页
2021-01-14

2021-01-14

作者: jiaway | 来源:发表于2021-01-14 18:05 被阅读0次

    <meta name="source" content="lake">

    数组 链表 跳表 基础

    • 数组:一段连续的内存空间,增删时间复杂度O(n),查找 O(1),每次增删会移动index后的所有元素

    • Java中ArrayList 增删会使用系统的System.arrayCopy 移动源和目标位置,如 统一向后移动1

    • 链表:非连续 非顺序的存储结构,通过指针链接,查找时间复杂度O(n),增删O(1)

    • lookup 需要按照顺序依次 next 查找

    • 跳表(skip-list):链表的查找慢,为了加快速度,将链表升维,以空间换时间,增加多级索引,如下图,查找的时间复杂度是O(logn),但是当数据有改变时需要更新索引,维护成本高。redis的底层使用的是跳表。

    • redis底层使用跳表不用红黑树的原因是因为 时间复杂度一样,但红黑树有平衡操作会浪费更多的性能,redis更关注局部

    image.png

    相关文章

      网友评论

          本文标题:2021-01-14

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