二进制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] }];