美文网首页
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