#include<stdio.h>
#include<iostream>
using namespace std;
//循环
int binarySearch(int* arr,int num,int length){ //数组 查询值 数组长度
int low=0,len=length;//初始化起点和终点
while(low<=len){//起点小于等于终点的时候说明查找还未结束
int mid=(low+len)/2;//求中点
if(arr[mid]==num){
return mid;//找到
}
if(arr[mid]>num){
len=mid-1;//在左边
}
if(arr[mid]<num){
low=mid+1;//在右边
}
}
return -1;//查找结束 没找到
}
//递归
int binarySearch2(int* arr,int num,int low,int len){ //数组 查找值 起点 终点
int mid=(low+len)/2;//求中点
if(low>len){ // 没找到
return -1;
}
if(arr[mid]==num){//找到
return mid;
}
if(arr[mid]>num){//在左边
return binarySearch2(arr,num,low,mid-1);
}
if(arr[mid]<num){//在右边
return binarySearch2(arr,num,mid+1,len);
}
}
int main(void){
int arr[10]={1,2,3,4,5,8,9,10,11,50};
cout<<binarySearch(arr,10,9)<<endl;
cout<<binarySearch2(arr,7,0,9)<<endl;
system("pause");
return 0;
}