What is the simplest way to do a binary search on an (already) sorted NSArray?
Some potential ways I have spotted so far include:
-
The use of
CFArrayBSearchValues(mentioned here) – would this work on anNSArray? -
The method
indexOfObject:inSortedRange:options:usingComparator:ofNSArrayassumes the array is sorted and takes anoptsparam of typeNSBinarySearchingOptions– does this mean it performs a binary search? The docs just say:Returns the index, within a specified range, of an object compared with elements in the array using a given NSComparator block.
-
Write my own binary search method (something along the lines of this).
I should add that I am programming for iOS 4.3+
Thanks in advance.
1 and 2 will both work. #2 is probably easier; it certainly doesn’t make sense for that method to do anything other than a binary search (if the range is above a certain size, say). You could verify on a large array that it only does a small number of comparisons.