二分查找法

二分查找法

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 (注)對于有序數列才能使用二分查找法。...
    老實李閱讀 776評論 1 1
  • 好久沒有和大家見面了,最近一周每天晚上都在搬家,一直沒有時間。今天來給大家分享一道面試的時候,被問及的一道算法題:...
    小草莓子桑閱讀 1,160評論 1 12
  • 二分查找算法是一種在有序數組中查找某一特定元素的搜索算法。搜素過程從數組的中間元素開始,如果中間元素正好是要查找的...
    Bloo_m閱讀 514評論 0 6
  • Hello,大家好,今天給大家繼續講解排序系列。可能有細心的"鳥友"會問,你不是講解排序嗎?怎么今天的主題是...
    Leon_Geo閱讀 297評論 0 1
  • 最近公司項目要上一個日歷提醒的功能,之前沒有接觸過類似的需求,只得從頭開始慢慢研究,今天借機給大家分享一下個...
    Hem1ngTai閱讀 4,348評論 19 8