跳过列表:插入
Skip List: Insertions
我试图了解跳跃列表是如何用于插入的,但是当我把它画出来时,它不起作用。
|-inf<---------------------------->+inf|0
|-inf<--------->4<---------------->+inf|1
|-inf<--------->4<--->9<--->11<--->+inf|2
|-inf<--->1<--->4<--->9<--->11<--->+inf|3
所以我想在上面的链表中插入5
从第 0 行开始:从 -inf 开始,将 5 与 +inf 进行比较,移至下一行。
移至第 1 行:
是 5 <= 4,不是。与右侧的内容进行比较,+inf。从元素 4 向下移动到第 2 行。
移至第 2 行:
现在我们在 4 和 9 之间遍历,所以比较类似于 5 <= 4?不,是 5 <= 9 吗?是的。在 4 和 9 之间插入。
但是现在 5 没有出现在第 3 行?
我做错了什么?
当你看到 5 <= 9 时,你必须继续往下走,直到到达底部。在较低级别之一中可能还有 4 到 9 之间的任何数字。当您确定它在底行的位置时,您将它插入那里,然后根据 RNG 的结果开始将它插入更高一排。插入的完整序列类似于:
- 5 > +信息?否:下移。
- 5 > 4?是:向右移动。
- 5 > +信息?否:下移。
- 5 > 9?否:下移。
- 5 > 9?否:下移。
- 上一步无法向下移动,所以在底部插入 4 和 9 之间。
- 按概率将 5 添加到更高的行。
我试图了解跳跃列表是如何用于插入的,但是当我把它画出来时,它不起作用。
|-inf<---------------------------->+inf|0
|-inf<--------->4<---------------->+inf|1
|-inf<--------->4<--->9<--->11<--->+inf|2
|-inf<--->1<--->4<--->9<--->11<--->+inf|3
所以我想在上面的链表中插入5
从第 0 行开始:从 -inf 开始,将 5 与 +inf 进行比较,移至下一行。
移至第 1 行:
是 5 <= 4,不是。与右侧的内容进行比较,+inf。从元素 4 向下移动到第 2 行。
移至第 2 行:
现在我们在 4 和 9 之间遍历,所以比较类似于 5 <= 4?不,是 5 <= 9 吗?是的。在 4 和 9 之间插入。
但是现在 5 没有出现在第 3 行? 我做错了什么?
当你看到 5 <= 9 时,你必须继续往下走,直到到达底部。在较低级别之一中可能还有 4 到 9 之间的任何数字。当您确定它在底行的位置时,您将它插入那里,然后根据 RNG 的结果开始将它插入更高一排。插入的完整序列类似于:
- 5 > +信息?否:下移。
- 5 > 4?是:向右移动。
- 5 > +信息?否:下移。
- 5 > 9?否:下移。
- 5 > 9?否:下移。
- 上一步无法向下移动,所以在底部插入 4 和 9 之间。
- 按概率将 5 添加到更高的行。