折半查找又叫二分查找,适用于有序的顺序表,在有序表(eg:单调递增)中快速找到Key,将key与中间值进行比较,如果大于中间值,则要找的数据在后半部分,小于中间值,则需要的数据在前半部分,然后缩小范围继续折半查找,找到则返回该数据,找不到返回返回失败信息。
#include<iostream>
using namespace std;
int Biniry_Search(int l[10], int key){
int low = 0, high = 10-1, mid;
while(low<=high){
mid = (low+high+1)/2;
if(l[mid] == key){
return l[mid];
}
else if(l[mid]<key)
low = low+1;
else if(l[mid]>key)
high = high+1;
}
return -1;
}
int main(){
int l[10],key,a;
cin>>key;
cout<<"intput l[10]"<<endl;
for(int i=0; i<10;i++)
cin>>l[i];
a = Biniry_Search(l,key);
cout<<"key="<<a<<endl;
}