2016-06-19 7 views
1

配列内の要素を検索するときは、.contains()メソッドを使用できます。私が知りたいのは、どのように動作するのですか?バイナリ検索または逐次検索またはそれ以外の何かがありますか?迅速な.contains(element:_)メソッドはどのように機能しますか?

+4

これは実装の詳細と考えるべきですが、任意の(必ずしもソートされていない)配列で動作するため、バイナリ検索は使用できません。あなたが本当に興味があるなら、Swiftのソースコードを見てください! –

答えて

0

contains(_:)の方法は、Sequenceで定義されています。 Sequenceは、コンテンツの安定性については何も仮定せず、ランダムアクセスを提供しないため、cantは線形検索以上の機能を果たします。 Collectionはランダムアクセスを提供するので、少なくともバイナリ検索を実装することは可能ですが、そのためにはコンテンツがソートされているという保証が必要です。

proposal for adding binary search to the Swift Standard Libraryがあるということは、バイナリ検索方法が既に存在しないというもう一つの良い兆候です。

Array(内容はソートされています)をNSArrayにキャストし、バイナリ検索にthis methodを使用できます。

関連する問題