二分查找法

二分查找法

int binarySearch(int a[],int n,int key) {
    int low = 0,mid,high = n - 1;
    while(low <= high) {
        mid = (low + high)/2;
        printf("mid=%d\n",mid);
        if (key < a[mid]) {
            high = mid - 1;
        } else if (key > a[mid]) {
            low = mid +1;
        } else {
            return mid;
        }
    }
    
    return -1;
}

二分查找法(递归)

int binarySearch(int a[],int n,int low,int high,int key) {
    int low = 0,mid,high = n - 1;
    if(low <= high) {
        mid = (low + high)/2;
        printf("mid=%d\n",mid);
        if (key < a[mid]) {
            return binarySearch(a,n,low,mid-1,key);
        } else if (key > a[mid]) {
            return binarySearch(a,n,mid+1,high,key);
        } else {
            return mid;
        }
    }
    
    return -1;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二分查找法主要用来解决查找的问题 1、二分查找法Binary Search (注)对于有序数列才能使用二分查找法。...
    老实李阅读 4,093评论 1 1
  • 好久没有和大家见面了,最近一周每天晚上都在搬家,一直没有时间。今天来给大家分享一道面试的时候,被问及的一道算法题:...
    小草莓子桑阅读 4,806评论 1 12
  • 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的...
    Bloo_m阅读 3,486评论 0 6
  • Hello,大家好,今天给大家继续讲解排序系列。可能有细心的"鸟友"会问,你不是讲解排序吗?怎么今天的主题是...
    Leon_Geo阅读 2,256评论 0 1
  • 最近公司项目要上一个日历提醒的功能,之前没有接触过类似的需求,只得从头开始慢慢研究,今天借机给大家分享一下个...
    Hem1ngTai阅读 9,773评论 19 8