【问题标题】:How does the swift .contains(element:_) method work?swift .contains(element:_) 方法是如何工作的?
【发布时间】:2016-10-20 23:47:19
【问题描述】:

在数组中搜索元素时,可以使用.contains() 方法。我想知道它是如何工作的,它是进行 二分搜索 还是 顺序搜索 或完全是别的什么?

【问题讨论】:

  • 这应该被视为一个实现细节,但由于它适用于任意(不一定是排序的)数组,因此不能使用二进制搜索。如果你真的很好奇,就去 Swift 源码里看看吧!

标签: swift search contains


【解决方案1】:

contains(_:) 方法在Sequence 上定义(并由协议扩展提供)。 Sequence 对其内容的稳定性不做任何假设,也不提供随机访问,所以它不能做的不仅仅是线性搜索。 Collection 提供随机访问,因此至少可以在其中实现二进制搜索,但要做到这一点,您需要保证内容已排序。

有一个proposal for adding binary search to the Swift Standard Library 是另一个好兆头,表明还没有二分搜索方法。

但是,您可以将Array(其内容已排序)转换为NSArray,并使用this method 进行二分搜索。

【讨论】:

    猜你喜欢
    • 2015-01-28
    • 2011-01-26
    • 2015-10-31
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    相关资源
    最近更新 更多