二进制searchNSArray没有对象search,但条件
所以,我有这个NSNumber
对象的数组。 我有一些我自己的,我需要在数组中find一个数字比我的数字最小的余量。
我如何使用二进制search?
方法: indexOfObject:inSortedRange:options:usingComparator
接受对象作为参数,我没有它。 如何使用这种条件进行二分查找,但没有对象?
您需要提供一个对象 – 指定正在search的项目的值的任何对象。 只要比较器知道如何提取值, indexOfObject:inSortedRange:options:usingComparator:
将返回一个适当的值。
您需要指定NSBinarySearchingInsertionIndex
选项以使search以最小量返回比目标值大的第一项的位置,即新值的插入索引。
NSNumber *target = ... // Your target number int index = [sortedArray indexOfObject:target inSortedRange:NSMakeRange(0, sortedArray.count) options:NSBinarySearchingInsertionIndex usingComparator:^(id lhs, id rhs) { return [lhs compare:rhs] }];