编程实现:按降序输入若干个整数并存入一个整型数组中,对从键盘输入的数据进行查找,要求使用折半查找算法,输出查找结果,并统计本轮折半查找的次数。(要求:循环实现多个数的折半查找,输入1则继续下一个数的查找、输入其他整数则结束查找)。输入输出格式参见样张:
#include <iostream>
using namespace std;
int main(void)
{
int n,a[20],i,m,b=1,bot,top,mid,p;
cout<<"请输入数组元素的个数(n<=20):";
cin>>n;
cout<<"请按照降序输入"<<n<<"个元素:"<<endl;
for (i=0;i<n;i++)
cin>>a[i];
while (b==1)
{
p=0;
cout<<"***********************************************"<<endl;
cout<<"请输入需要查找的数据:";
cin>>m;
bot=0;
top=n-1;
while (bot<=top)
{
p++;
mid=(bot+top)/2;
if(m==a[mid])
break;
else
if(m<a[mid])
bot=mid+1;
else
top=mid-1;
}
if(bot<=top)
{
cout<<"查找成功!该值在第"<<mid+1<<"个位置"<<endl;
cout<<"查找"<<m<<"总共比较:"<<p<<"次"<<endl;
}
else
{
cout<<"查无此数!"<<endl;
cout<<"查找"<<m<<"总共比较:"<<p<<"次"<<endl;
}
cout<<"如需继续查找请输入1,如需退出请输入其他整数:";
cin>>b;
}
return 0;
}
运行结果如下: