所以,我有这个包含 NSNumber
的对象数组。我有自己的数字,我需要在数组中找到一个比我的数字大一点的数字。
如何为此使用二进制搜索?
方法:indexOfObject:inSortedRange:options:usingComparator
接受对象作为参数,但我没有。如何使用此条件但没有对象进行二分查找?
最佳答案
您需要提供一个对象 - 指定要搜索的项目的值的任何对象。只要比较器知道如何提取值,indexOfObject:inSortedRange:options:usingComparator:
就会返回正确的值。
您需要指定 NSBinarySearchingInsertionIndex
选项,使搜索返回第一个比目标值大最小值的项目的位置,即新值的插入索引。
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]
}];
关于ios - 没有要搜索的对象但有条件的二进制搜索 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723915/