有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素
有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则打印出“无此数”。要求用C++编程#incl...
有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则打印出“无此数”。要求用C++编程
#include <iostream>
using namespace std;
int main()
{
void Search(int x,int array[]);
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},x;
cout<<"input a number:";
cin>>x;
Search(x,a);
return 0;
}
void Search(int x,int array[])
{
int mid,low=1,high=15,target=0;
while(low<=high && target==0)
{
mid=(low+high)/2;
if(x==array[mid])
{
cout<<"该数是数组中的第"<<mid<<"数"<<endl;
target=1;
}
else if(x<array[mid]) high=mid-1;
else low=mid+1;
}
if(target==0) cout<<"数组中找不到该数"<<endl;
}
以上是我编的一段代码,输入12运行结果却是“数组中找不到该数”,求各位指定迷津,我这段程序哪出错了,望指点。。。感激不尽。。。 展开
#include <iostream>
using namespace std;
int main()
{
void Search(int x,int array[]);
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1},x;
cout<<"input a number:";
cin>>x;
Search(x,a);
return 0;
}
void Search(int x,int array[])
{
int mid,low=1,high=15,target=0;
while(low<=high && target==0)
{
mid=(low+high)/2;
if(x==array[mid])
{
cout<<"该数是数组中的第"<<mid<<"数"<<endl;
target=1;
}
else if(x<array[mid]) high=mid-1;
else low=mid+1;
}
if(target==0) cout<<"数组中找不到该数"<<endl;
}
以上是我编的一段代码,输入12运行结果却是“数组中找不到该数”,求各位指定迷津,我这段程序哪出错了,望指点。。。感激不尽。。。 展开
展开全部
#include<stdio.h>
#define N 15
int main()
{
int a[N],i,key,mid,star=0,end=N-1;
printf("enter N numbers:\n");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("enter a lookfor number:\n");
scanf ("%d",&key);
if(key>a[end]||key<a[0])
{ printf("the number is not lookfor it\n");}
while(star<=end)
{
mid = (star+end)/2;
if(key==a[mid]) { printf("这个数在第%d\n",mid);}
if(key>a[mid]) {star=mid+1;}
else {end=mid-1;}
}
return 0;
}
不好意思看错题了,我这个是从小到大排列的。
求用递归应该怎么个写法。
#define N 15
int main()
{
int a[N],i,key,mid,star=0,end=N-1;
printf("enter N numbers:\n");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("enter a lookfor number:\n");
scanf ("%d",&key);
if(key>a[end]||key<a[0])
{ printf("the number is not lookfor it\n");}
while(star<=end)
{
mid = (star+end)/2;
if(key==a[mid]) { printf("这个数在第%d\n",mid);}
if(key>a[mid]) {star=mid+1;}
else {end=mid-1;}
}
return 0;
}
不好意思看错题了,我这个是从小到大排列的。
求用递归应该怎么个写法。
追问
兄台 你的和我的运行结果一样啊。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询