【问题标题】:Question regarding Algorithm Design Manual - Data Structure for the Dictionary关于算法设计手册的问题 - 字典的数据结构
【发布时间】:2011-06-10 21:02:16
【问题描述】:

我开始阅读《算法设计手册》,在阅读时遇到了一条我没有理解的内容。有人可以澄清一下作者在这里的意思吗?该行是:

有序链表或数组——维护一个有序链表通常是 除非您试图消除重复项,否则不值得付出努力,因为我们 不能在这样的数据结构中执行二进制搜索。排序后的数组将 当且仅当插入或删除的次数不多时才合适。

这一行与为字典选择数据结构有关。 我不明白的一点是,为什么作者说“维护一个排序的链表通常是不值得的,除非你试图消除重复,因为我们 不能在这样的数据结构中进行二分查找"

据我了解,我在 Google 上搜索是否可以对已排序的数组进行二分搜索,并且根据我发现的情况,我们似乎可以。所以我不确定。

有人可以帮我理解一下吗?

非常感谢。

【问题讨论】:

  • 链表与数组不同。您可以对数组进行二分搜索,因为数组允许所谓的“随机访问”,而链表只允许“顺序访问”。
  • 感谢您的解释。这是有道理的。 :-)

标签: algorithm data-structures dictionary


【解决方案1】:

你不能有效地对链表进行二分查找,因为你不能在恒定时间内随机查找。要找到中点,您必须执行 n/2 步(遍历列表)。这增加了很大的开销,并使列表不适合二分搜索数据结构。

【讨论】:

  • 感谢dark_charlie 的解释。我现在明白了。 :)
猜你喜欢
  • 2011-09-12
  • 2020-11-25
  • 1970-01-01
  • 2015-01-15
  • 2011-05-14
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多