本小节需要你用递归函数实现二分法查找数组元素。
编程要求
用递归函数实现二分法查找数组元素。
提示:先输入一个升序数组,再输入一个数,输出该数在数组中的下标;
不在数组中输出-1.
效果如下:
输入:
9 10 23 25 26 27 28 30 31 35
26
输出:
4
#include<iostream>
using namespace std;
int main()
{
int a[10];
int n,k;
bool j;
j=0;
for(int i=0;i<10;i++)
{
cin>>a[i];
}
cin>>n;
for(k=0;k<10;k++)
{
if(a[k]==n)
{
j=1;
break;
}
}
if(j==0)
{
cout<<-1<<endl;
}
else if(j==1)
{
cout<<k<<endl;
}
}
或
#include<iostream>
using namespace std;
#define N 10
int search(int [],int,int,int);
int main()
{
int key;
int b[N];
for(int i = 0;i<N;i++)
{
cin>>b[i];
}
int c=0;
int d=sizeof(b)/sizeof(int)-1;
int result;
cin>>key;
result=search(b,c,d,key);
cout<< result<<endl;
return 0;
}
int search(int a[],int left,int right,int key)
{
if(left>right)
{
return -1;
}
else
{
int middle=(left+right)/2;
if (a[middle]==key)
{
return middle;
}
else if(key<a[middle])
{
right=middle-1;
return search(a,left,right,key);
}
else
{
left=middle+1;
return search(a,left,right,key);
}
}
}