#include <iostream>
using namespace std;
int a[] = {12,34,65,76,86,432,675,875,2352,67564};
int len = sizeof(a)/sizeof(int);
//递归折半查找,根据值返回查找的位置,不存在返回-1
int SearchPos(int low,int high,int val)
{
if(low<=high)
{
int mid = (low+high)/2;
if(a[mid] == val)
{
return mid;
}
else if(val<a[mid])
{
high = mid-1;
}
else
{
low = mid+1;
}
return SearchPos(low,high,val);
}
return -1;
}
//非递归折半查找
int SearchPos2(int low,int high,int val)
{
while(low<=high)
{
int mid = (low+high)/2;
if(a[mid]==val)
return mid;
else if(val>a[mid])
low = mid+1;
else
high = mid-1;
}
return -1;
}
int main()
{
int val = SearchPos(0,len-1,12);
cout<<val<<endl;
return 0;
}
折半查找
最新推荐文章于 2022-11-03 20:44:43 发布