二分法查找元素

时间:2022-06-09 22:13:10

二分查找(也叫折半查找),速度快,比较次数少是至今应用比较多的一种搜索算法。

下面提供一个方法可以方便调用:

- (NSInteger)searchObject:(id)obj inArray:(NSArray *)sortArray
{
    //二分法查找
    NSRange searchRange = NSMakeRange(0, [sortArray count]);
    NSInteger findIndx = [sortArray indexOfObject:obj inSortedRange:searchRange options:NSBinarySearchingLastEqual usingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        return [obj1 compare:obj2];
    }];
    return findIndx;
}

调用:

//二分法查找元素
    NSArray *numberArray = @[@1, @3, @27, @36, @42, @70, @82];
    [self searchObject:@36 inArray:numberArray];

注意需要查找的对象和数据源类型一致。

打印结果:

2016-11-30 16:12:06.434 CodeTechnique[59596:446054] 3