核心代碼:
注意:mid+-1很重要
int banarySearch(int a[],int left,int right,int x){ //左中右
int mid;
while(left<=right){
mid=(left+right)/2; //先進(jìn)行mid初始化
if (a[mid]==x) return mid;
else if(a[mid]<x){
left=mid-1;
}
else{
right=mid+1;
}
}
return -1;
}
示例:在排好序的數(shù)組(升序排列)中尋找元素
#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)); //注意下標(biāo)
system("pause");
return 0;
}