合并跳过列表

发布于 2024-11-05 17:48:07 字数 141 浏览 0 评论 0原文

如何以 O(n) 时间复杂度(最差)将 2 个给定的 Skip List(每个都有 n 个键)合并为一个 Skip List案件)?

只是寻找算法 - 没有特定的实现/语言。

How can I merge 2 given Skip lists (each with n keys) into a one single Skip List in O(n) time complexity (worst case)?

Just looking for the algorithm - no particular implementation/language.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

佼人 2024-11-12 17:48:07
store the two skip lists in two arrays: A,B
merge the arrays.
repeat until getting into root ('top' is a linked list containing only one element): 
   for each second entry in the skip list 'top' add a 'tag' (link 'upstairs' of the previous level)

它确实是 O(n),因为存储和合并都是 O(n),并且在循环中,您需要迭代:

n+n/2+n/4+n/8+... = sigma(n/2^k) where k in (0,infinity) = 2n
store the two skip lists in two arrays: A,B
merge the arrays.
repeat until getting into root ('top' is a linked list containing only one element): 
   for each second entry in the skip list 'top' add a 'tag' (link 'upstairs' of the previous level)

it is indeed O(n) because store and merge are O(n), and in the loop, you need to iterate over:

n+n/2+n/4+n/8+... = sigma(n/2^k) where k in (0,infinity) = 2n
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文