二分查找

NSInteger ranker(NSInteger key)
{
    NSArray *arr = @[@(1),@(5),@(6),@(9),@(10),@(12),@(18),@(21),@(23),@(25),@(29),@(33),@(35),@(38)];
    NSInteger lo = 0;
    NSInteger hi = arr.count - 1;
    while (lo <= hi) {
        NSInteger mid = lo + (hi - lo)/2;
        NSInteger midN = [[arr objectAtIndex:mid]integerValue];
        if (midN > key) {
            hi = mid-1;
        }
        else if(midN < key)
        {
            lo = mid+1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}

你可能感兴趣的:(二分查找)