/ / Existuje nejaký rýchly spôsob, ako hľadať, či niečo existuje v NSArray? - cieľ-c, algoritmus, vyhľadávanie, triedenie, nsarray

Je tam akokoľvek rýchlo hľadať, či existuje niečo v NSArray?-objektívne-c, algoritmus, vyhľadávanie, triedenie, nsarray

V súčasnej dobe, ak chcem hľadať, či je objekt v NSArray (nezoradený) alebo nie. Musím sa pretočiť cez pole a skontrolovať každý objekt, až kým nenájdem ten, ktorý zodpovedá mojim očakávaniam.

Pochybujem, že je to výkon, aj keď šek je iba vyhlásenie if.

Existuje nejaké riešenie na zlepšenie výkonu vyhľadávania?

Alebo môžem zoradiť pole nejakým spôsobom a použiť ho napríklad ako binárne vyhľadávanie?

odpovede:

3 pre odpoveď č. 1

Triedenie a vyhľadávanie bude trvať dlhšie ako aslučka opakuje každý prvok poľa, pretože triedenie založené na porovnávaní trvá v najlepšom čase O (n * log (n)), iterácia v poli bude trvať O (n) čas pre n prvkov v poli.

Pragmatickým riešením by bolo použitie NSArray # obsahujeObject, ak už objekt poznáte.

V opačnom prípade musíte implementovať svoju vlastnú porovnávaciu stratégiu a prejsť celým radom


-1 pre odpoveď č. 2

môžete použiť rýchle výpočet. napr:

NSEnumerator * enumerator = [set objectEnumerator];

NSNumber *setObject ;

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


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

}