目前,如果我想搜索一個對象是否在NSArray(不排序)中。我必須遍歷數組並檢查每個對象,直到找到符合我的期望的對象。是否有任何快速的方法來搜索NSArray中是否存在某種東西?
我懷疑它的性能,即使該檢查只是一個if語句。
爲了提高搜索性能,有沒有提供解決方案?
或者我只能以某種方式對數組進行排序並使用二進制搜索等方式?
目前,如果我想搜索一個對象是否在NSArray(不排序)中。我必須遍歷數組並檢查每個對象,直到找到符合我的期望的對象。是否有任何快速的方法來搜索NSArray中是否存在某種東西?
我懷疑它的性能,即使該檢查只是一個if語句。
爲了提高搜索性能,有沒有提供解決方案?
或者我只能以某種方式對數組進行排序並使用二進制搜索等方式?
排序然後搜索比循環遍歷數組的每個元素需要更多的時間,因爲基於比較的排序最多需要O(n * log(n))時間,遍歷數組將花費O(n)個時間爲陣列中的n個元素。
如果您已經知道該對象,一個實用的解決方案是使用NSArray#containsObject。
否則,您必須實現自己的比較策略,並通過陣列
您可以使用快速列舉步驟。例如:
NSEnumerator * enumerator = [set objectEnumerator];
NSNumber *setObject ;
while ((setObject = [enumerator nextObject]) != nil){
[gids appendString:[NSString stringWithFormat:@"%d",[setObject intValue]]];
}
這只是告訴如何循環。它與搜索無關。 – Chuck