二分查找又称折半查找,是一种效率较高的查找算法。。
现在稍微介绍一下:
(1):要求 线性表是有序表,表中按关键字有序,我们不妨设有序表示递增有序的。
(2):二分查找的思想 首先得确定中间点位置mid ,然后将key值与R[mid].key值进行比较,若key>R[mid].key,因为线性表示有序递增的,所以查找区间更新为 mid+1 ~high.。若key <R[mid].key.则查找区间跟新为1~mid-1;
见代码:
#include <iostream>
using namespace std;
int R[110];
int BinSearch(int key,int *R)
{
int low=1;
int high=100;
while(low<=high)
{
int mid=low+(high-low)/2;//这里不用(low+high)/2 是为了避免取下整数据丢失.
if(R[mid]==key)
return mid;
else if(R[mid]>key)
high=mid-1;
else
low=mid+1;
}
return 0;
}