跳表就是在链表的基础上加多级索引
而redis之所以用跳表而不是红黑树,其中一个原因就是,redis要取某个区间的数据,用跳表更有效。
比如要找7,从1开始,L4的下一个是nil,没找到,
然后,L3的下一个是4的L3,小于7,再下一个,是6的L3仍然小于7,再下一个到nil
然后,是6的L2,下一个是9的L2,比7大了,回到6的L1
然后,6的L1下一个是7的L1,找到了,返回
n表示共有多少数,k表示上一层一个索引对应下一层k个数(这里假设是均匀的)
跳表就是在链表的基础上加多级索引
而redis之所以用跳表而不是红黑树,其中一个原因就是,redis要取某个区间的数据,用跳表更有效。
比如要找7,从1开始,L4的下一个是nil,没找到,
然后,L3的下一个是4的L3,小于7,再下一个,是6的L3仍然小于7,再下一个到nil
然后,是6的L2,下一个是9的L2,比7大了,回到6的L1
然后,6的L1下一个是7的L1,找到了,返回
n表示共有多少数,k表示上一层一个索引对应下一层k个数(这里假设是均匀的)