2011-08-10 27 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

相關問題