二进制搜索的NSArray无需对象进行搜索,但条件(Binary searching NSArray

2019-10-19 08:32发布

所以,我有这个数组对象NSNumber ,它出现。 我有一些我自己的,我需要找到一个比由至少我的保证金数量更大的阵列中的一个数字。

我如何使用这个二进制搜索?

方法: indexOfObject:inSortedRange:options:usingComparator接受对象作为参数,我没有它。 我该怎么做这个条件,但没有一个对象的二进制搜索?

Answer 1:

您需要提供一个对象 - 被搜索指定项目的价值的任何对象。 只要比较知道如何提取值时, 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]
    }];


文章来源: Binary searching NSArray without having the object to search but a condition