二分法

作者: AdmondGuo | 来源:发表于2018-06-12 15:33 被阅读0次

核心代码:
注意:mid+-1很重要

int banarySearch(int a[],int left,int right,int x){   //左中右
    int mid;
    while(left<=right){
        mid=(left+right)/2;   //先进行mid初始化
        if (a[mid]==x) return mid;
        else if(a[mid]<x){
            left=mid-1; 
        }
        else{
            right=mid+1;
        }
    }
    return -1;
}

示例:在排好序的数组(升序排列)中寻找元素

#include <iostream>
#include <cstdio>
using namespace std;
int banarySearch(int a[],int left,int right,int x){   //左中右
    int mid;
    while(left<=right){
        mid=(left+right)/2;
        if (a[mid]==x) return mid;
        else if(a[mid]<x){
            left=mid-1;
        }
        else{
            right=mid+1;
        }
    }
    return -1;
}
int main(){
    int a[10]={1,3,4,6,7,8,10,11,12,15};
    printf("%d",banarySearch(a,0,9,6));    //注意下标
    system("pause");
    return 0;

}

相关文章

网友评论

      本文标题:二分法

      本文链接:https://www.haomeiwen.com/subject/mrxreftx.html