您的位置:首页 > 其它

第十四周实践项目1--验证折半查找

2015-12-04 17:17 316 查看
问题及代码:

(1)非递归式:

 

 

#include<iostream>
using namespace std;
int main()
{
int low=0,high,n;
int a[100];
int i=0,f;
cout<<"Please input the number of data and what data do you want to find"<<endl;
while(cin>>n)
{

cin>>f;
high=n-1;
while(i<n)
{
cin>>a[i];
i++;
}
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==f)
{
cout<<"find in the postion "<<mid+1<<endl;
break;
}
if(a[mid]>f)
{
high=mid-1;
}
else
{
low=mid+1;
}

}
if(low>high)
{
cout<<"can't find it"<<endl;
}
cout<<"Please input the number of data and what data do you want to find"<<endl;
low=0;
i=0;
}
return 0;

}


运行结果:



(2)递归方式:

#include<iostream>
using namespace std;
void digui(int low,int high,int a[],int f);
int main()
{
int low=0,high,i=0;
int f,a[50],n;
cin>>n>>f;
while(i<n)
{
cin>>a[i];
i++;
}
high=n-1;
digui(low,high,a,f);
return 0;
}
void digui(int low,int high,int a[],int f)
{
int mid;
mid=(high-low)/2;
if(low<=high)
{
if(a[mid]==f)
{
cout<<"find in "<<mid+1;

}
else if(a[mid]<f)
{
digui(mid+1,high,a,f);
}
else
{
digui(low,mid-1,a,f);
}
}
if(low>high)
cout<<"not find"<<endl;
}

运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: