二分搜索法要求数组中的元素必须是有序存放的,在这假定数组元素按升序存放。
比较结果的三种情况:
(1)如果关键字小于中央元素,则继续在数组中的前部分进行搜索。
(2)如果关键字等于中央元素,则搜索结束,找到匹配元素。
(3)如果关键字大于中央元素,则继续在数组中的后半部分搜索。
#include <iostream>
using namespace std;
int binarySearch(int list[],int key,int arraySize)
{
int low =0;
int high=arraySize-1;
while(high>=low)
{
int mid=(low+high)/2;
if(key<list[mid])
{
high=mid-1;
}
else if(key==list[mid])
{
return mid;
}
else
{
low=mid+1;
}
}
return -low-1;
}
int main()
{
int list[12]={2,4,5,7,11,14,16,18,30,45,67,78};
int result=binarySearch(list,5,12);
cout<<result<<endl;
system("pause");
return 0;
}