【问题标题】:Evenly placed Skip pointers均匀放置的跳过指针
【发布时间】:2011-02-22 13:50:22
【问题描述】:

我正在阅读有关跳过指针的内容,有人建议最好放置均匀间隔的 sqrt(len of list) 跳过指针。有人能告诉我这里的“均匀分布”是什么意思吗?我也想看看用 Java 或 Python 做这样的事情的代码

【问题讨论】:

  • 除非你有一个非常专业的问题,否则不要考虑在 Python 中使用链表。
  • 我在python中使用了列表ds
  • 他的意思是实现你自己的 *list 数据结构。 Python 自己的内置 list 在大多数情况下已经足够好了。

标签: python linked-list skip-lists


【解决方案1】:

我认为你的朋友在谈论skip lists。通常跳过指针在列表中随机放置。均匀间隔的指针是指在整个列表中确定地间隔它们而不是随机放置它们。这样的方案可能会提供更快的读取速度,但在写入列表时可能需要更多的计算。

【讨论】:

  • 我专门指的是“均匀间隔”的指针,而不是随机的
  • @user465983:是的,我提到过。
【解决方案2】:
def add_skips(posting_list):
post_list_with_skips = []
skip_count = math.floor(math.sqrt(len(posting_list)))
pos_index = 0
skip_period = math.floor(len(posting_list) / skip_count)
# -1 because of list indexing starts with 0
skip_index = skip_period - 1
while pos_index < len(posting_list):
    if pos_index == skip_index:
        post_list_with_skips.append([posting_list[pos_index], 1])
        skip_index += skip_period
    else:
        post_list_with_skips.append([posting_list[pos_index], 0])
    pos_index += 1
return post_list_with_skips

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2016-09-26
相关资源
最近更新 更多