【程序设计】
题目:编写一个程序,可以对长度为n(n<=20)的有序升序数列array
进行折半查找(其实就是“二分法”查找)
输出示例如下,请复制粘贴使用
"找到@下标是"
"没有找到#"
样例:
请输入数组长度:6
请输入数组:12 34 57 80 110 114
请输入要查找的数:107
没有找到#
请按任意键继续. . .
代码如下:
#include <iostream>
using namespace std;
int main()
{
int const max=20;
int array[max];
int n;//数组长度
cout<<"请输入数组长度:";
cin>>n;
cout<<"请输入数组:";
for(int i=0;i<n;i++) cin>>array[i];
int a;//待查找的数
cout<<"请输入要查找的数:";
cin>>a;
/**********Program**********/
int front=0,middle,behind=n-1;
int flag=0;
for(int i=0;i<n;i++)
{
middle=(front+behind)/2;
if(a==array[middle])
{
flag=1;
cout<<"找到@下标是"<<middle<<endl;
break;
}
if(a<array[middle])
{
behind=middle-1;
}
if(array[middle]<a)
{
front=middle+1;
}
}
if(!flag)
cout<<"没有找到#"<<endl;
/********** End **********/
return 0;
}