2011-08-10 15 views
4

現在、オブジェクトがNSArray(ソートされていない)にあるかどうかを検索したい場合私は配列をループし、私の期待に合ったものが見つかるまで各オブジェクトをチェックする必要があります。NSArrayに何かが存在するかどうか検索する方法はありますか?

チェックがif文であってもパフォーマンスは疑わしいです。

検索パフォーマンスを改善するには、解決策がありますか?

または、配列を何らかの方法で並べ替えるだけで、バイナリ検索のような方法を使用できますか?

答えて

3

ソートすると、比較ベースのソートではO(n * log(n))時間がかかり、配列全体を反復するとO(n)時間かかるため、ループの各要素を繰り返し実行するより時間がかかります配列内のn要素の場合

あなたが既にオブジェクトを知っている場合、現実的な解決策はNSArray#containsObjectを使用することです。

そうしないと、あなたは、高速列挙を使用することができ、アレイ

-1

を通して、あなた自身の比較戦略とステップを実装する必要があります。 例:

NSEnumerator * enumerator = [set objectEnumerator];

NSNumber *setObject ; 

while ((setObject = [enumerator nextObject]) != nil){ 


    [gids appendString:[NSString stringWithFormat:@"%d",[setObject intValue]]]; 

} 
+0

これはループする方法を示しています。それは検索とは関係ありません。 – Chuck

関連する問題