跳跃表 API

最后更新于:2022-04-01 21:35:27

表 5-1 列出了跳跃表的所有操作 API 。 * * * 表 5-1 跳跃表 API | 函数 | 作用 | 时间复杂度 | | --- | --- | --- | | `zslCreate` | 创建一个新的跳跃表。 | ![O(1)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f3e0cd9.png) | | `zslFree` | 释放给定跳跃表,以及表中包含的所有节点。 | ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) , `N` 为跳跃表的长度。 | | `zslInsert` | 将包含给定成员和分值的新节点添加到跳跃表中。 | 平均 ![O(\log N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518fb024df.png) ,最坏 ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) , `N` 为跳跃表长度。 | | `zslDelete` | 删除跳跃表中包含给定成员和分值的节点。 | 平均 ![O(\log N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518fb024df.png) ,最坏 ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) , `N` 为跳跃表长度。 | | `zslGetRank` | 返回包含给定成员和分值的节点在跳跃表中的排位。 | 平均 ![O(\log N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518fb024df.png) ,最坏 ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) , `N` 为跳跃表长度。 | | `zslGetElementByRank` | 返回跳跃表在给定排位上的节点。 | 平均 ![O(\log N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518fb024df.png) ,最坏 ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) , `N` 为跳跃表长度。 | | `zslIsInRange` | 给定一个分值范围(range), 比如 `0` 到 `15` , `20` 到 `28`,诸如此类, 如果给定的分值范围包含在跳跃表的分值范围之内, 那么返回 `1` ,否则返回 `0` 。 | 通过跳跃表的表头节点和表尾节点, 这个检测可以用 ![O(1)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f3e0cd9.png) 复杂度完成。 | | `zslFirstInRange` | 给定一个分值范围, 返回跳跃表中第一个符合这个范围的节点。 | 平均 ![O(\log N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518fb024df.png) ,最坏 ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) 。 `N` 为跳跃表长度。 | | `zslLastInRange` | 给定一个分值范围, 返回跳跃表中最后一个符合这个范围的节点。 | 平均 ![O(\log N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518fb024df.png) ,最坏 ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) 。 `N` 为跳跃表长度。 | | `zslDeleteRangeByScore` | 给定一个分值范围, 删除跳跃表中所有在这个范围之内的节点。 | ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) , `N` 为被删除节点数量。 | | `zslDeleteRangeByRank` | 给定一个排位范围, 删除跳跃表中所有在这个范围之内的节点。 | ![O(N)](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-09-13_55f518f9da88a.png) , `N` 为被删除节点数量。 |
';