折半查找迭代算法:
#include <iostream>
//迭代的方法:
using namespace std;
//*a传递数组,x为传递的要查找的数,n为数据的个数
int erfen(int *a,const int x,const int n);
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10};
int o;
int num=9;
o=erfen(a,num,10);
if(o<0)
{
cout<<"对不起没有找到!"<<endl;
}
else {
cout<<"在a["<<o<<"]中找到"<<num<<endl;
}
return 0;
}
int erfen(int *a,const int x,const int n)
{
int left=0,right=n-1;
while(left<=right){
int mid=(left+right)/2;
if(x<a[mid]) right=mid-1;
else if(x>a[mid]) left=mid+1;
else return mid;
}
return -1;
}