Есть ли быстрый способ поиска, существует ли что-то в NSArray? - PullRequest
4 голосов
/ 10 августа 2011

В настоящее время, если я хочу найти, находится ли объект в NSArray (не отсортирован) или нет. Я должен перебрать массив и проверить каждый объект, пока не найду тот, который соответствует моим ожиданиям.

Я сомневаюсь, что это производительность, даже если проверка только оператор if.

Для повышения эффективности поиска есть ли решение?

Или я могу только каким-то образом отсортировать массив и использовать что-то вроде бинарного поиска?

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Сортировка с последующим поиском займет больше времени, чем цикл, повторяющийся для каждого элемента массива, поскольку сортировка на основе сравнения занимает в лучшем случае O (n * log (n)), а итерация по массиву займет O (n) время для n элементов в массиве.

Прагматичным решением было бы использование NSArray # containsObject, если вы уже знаете объект.

В противном случае вам нужно реализовать собственную стратегию сравнения и пройтись по массиву

0 голосов
/ 10 августа 2011

Вы можете использовать быстрое перечисление. например:

NSEnumerator * enumerator = [set objectEnumerator];

NSNumber *setObject ;

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


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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...