【问题标题】:Is binary search for an ordered list O(logN) in Elixir?是在 Elixir 中对有序列表 O(logN) 进行二进制搜索吗?
【发布时间】:2016-11-28 03:47:43
【问题描述】:

对于有序列表,二分查找时间复杂度为 O(logN)。但是在 Elixir 中,列表是链表,因此为了获得列表的中间元素,您必须迭代 N/2 次,这使得整体搜索 O(NLogN)。

所以我的问题是:

  1. 上述时间复杂度是否正确?
  2. 如果它是正确的,那么二分搜索在 Elixir 中就没有意义了,对吧?你必须迭代列表才能得到你想要的,所以最好是 O(N)。

【问题讨论】:

标签: time-complexity elixir binary-search


【解决方案1】:

是的,由于您所说的原因,几乎没有理由对链表进行二进制搜索。您需要一个随机访问数据结构(通常是一个数组)才能使二分搜索有用。

当元素的比较成本非常高时,可能会出现一个有趣的极端情况,因为例如它们只是远程存储项目的句柄。在这种情况下,通过链表进行二分搜索可能仍然优于线性搜索,因为虽然需要更多操作 (O(N * log(N))),但它需要的比较更少 (O(log(N))),而线性搜索需要 O(N) 比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-31
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 2011-05-02
    • 1970-01-01
    相关资源
    最近更新 更多