有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
以下是此题的【c++源代码】,需要【c源代码】请点击进入
#include
using namespace std;
int main()
{ const int n=7;
int i,number,top,bott,mid,loca,a[n];
bool flag=true,sign;
char c;
cout<
cin>>a[0];
i=1;
while(i
{cin>>a[i];
if (a[i]>=a[i-1])
i++;
else
cout<
}
cout<
for (i=0;i
cout<
cout<
while(flag)
{cout<
cin>>number;
sign=false;
top=0; //top是查找区间的起始位置
bott=n-1; //bott是查找区间的最末位置
if ((number
loca=-1; // 表示找不到
while ((!sign) && (top<=bott))
{mid=(bott+top)/2;
if (number==a[mid])
{loca=mid;
cout<
sign=true;
}
else if (number