二分法查找有序数组的某个数的下标

一种是递归的,一种是非递归的


int binarySeach(int a[],int low,int high,int findNum)

{

    if(low>high) {

        return-1;

    }

    int mid = (low + high) /2;

    if(findNum > a[mid]) {

        low = mid +1;

        return binarySeach(a, low, high, findNum);

    }else if(findNum < a[mid])

    {

        high = mid -1;

        return binarySeach(a, low, high, findNum);

    }else

    {

        return mid;

    }

}

int binarySeach2(int a[],int low,int high,int findNum)

{

    while(low<=high) {

        int mid = (low + high) /2;

        if(findNum > a[mid]) {

            low = mid +1;

        }else if(findNum < a[mid])

        {

            high = mid -1;

        }else

        {

            return  mid;

        }

    }

    return  -1;

}

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    int a[] = {1,3,4,6,8,10,12,13,14,18,22,25,28,30,33,37,42,55,76,88,199,211};

    int result =binarySeach2(a,0,21,199);

    NSLog(@"result=%d",result);


}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,449评论 0 10
  • 二分查找法,很经典的折半查找算法,想当然觉得很简单,算法效率log(2)N。今天跟它干上了,呵呵。真是实践出真知,...
    David_IT阅读 1,822评论 0 0
  • // 顺序查找 int SequentialSearch(vector & v, int k) { for (in...
    刘帆_d384阅读 580评论 0 0
  • 重要ma 文本1 文本2 文本3 好的基督教萨克 文本1 文本2 文本3 按实际的萨达 大表哥的微博 一盏灯, 一...
    crushing阅读 371评论 0 0
  • 今天我生日,晚餐我给自己点了一份加了鸡蛋的面。 要不是早上QQ一堆送礼物的,我还真忘了今天是生日。 还记得初中的时...
    三和的秘密基地阅读 285评论 0 0