二分查找法,在一个已知有序队列中找出与给定关键字相同的数的具体位置。
二分查找法,在一个已知有序队列中找出与给定关键字相同的数的具体位置。
原理是分别定义三个指针low、high、mid分别指向待查元素所在范围的下界和上界以及区间的中间位置,即mid=(low+high)/2,让关键字与mid所指的数比较,若等则查找成功并返回mid,若关键字小于mid所指的数则high=mid-1,否则low=mid+1,然后继续循环直到找出或找不到为止。
源代码:
int SearchBin() //二分查找
{
int low,high,z,mid; //定义下界和上界以及中间位置的指针及关键字z
int a={6,38,52,89,100};
cout<<"请输入一个数:";
cin>>z;
cout<<endl;
low=0;high=4; //下界和上界所指示的初始位置
while(low<=high)
{
mid=(low+high)/2;
if(z==a)
{
return mid; //若关键字等于mid所指的数
}
else if(z<a)
high=mid-1; //若关键字小于mid所指的数
else
low=mid+1; //若关键字大于mid所指的数
}
return 10; //若查找不到,返回一个非a数组下标的数以便处理
}