Dev-C++ 二分查找:迭代,递归两种方法
#include <cstdlib>
#include <iostream>
using namespace std;
int search(int array[],int n,int v)
{
int right , left , middle;
left=0;
right=n-1;
while(left<=right)
{
middle=(right+left)/2;
if(array[middle]>v)
{
right=middle-1;
}
else if(array[middle]<v)
{
left=middle+1;
}
else
{
return middle;
}
}
return -1;
}
int research(int array[],int low,int high,int v)
{
int middle;
middle=(low+high)/2;
if(low<high)
{
if(array[middle]>v)
{
return research(array,low,middle,v);
}
else if(array[middle]<v)
{
return research(array,middle,high,v);
}
else
{
return middle;
}
}
else if(low==high)
{
if(array[middle]==v)
{return middle;}
else
{return -1;}
}
else
{return -1;}
}
int main(int argc, char *argv[])
{
int array[]={1,2,3,4,5,6,7,8,9,67,78,98,123,345,567,4554};
int m;
m=search(array,16,78);
cout<<m<<endl;
int n;
n=research(array,0,15,78);
cout<<n<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}