c语言实验报告的二分法查找,跪求各位高手帮助
假如一维数组a[N]中的元素是一个从小到大排序的有序表,编写一个程序从a中二分法查找出其值等于给定值x的元素...
假如一维数组a[N]中的元素是一个从小到大排序的有序表,编写一个程序从a中二分法查找出其值等于给定值x的元素
展开
2个回答
展开全部
#include"stdio.h"
#define N 10
int find(int a[],int x)
{
int p,h,t;
p=-1;
h=0,t=N-1;
while(h<=t)
if(a[(h+t)/2]<x) h=(h+t)/2;
else if(a[(h+t)/2]>x) t=(h+t)/2;
else {p=(h+t)/2;break;}
return p;
}
main()
{
int p,m,a[N]={1,3,4,8,9,11,13,17,18,20};
scanf("%d",&m);
p=find(a,m);
if(p==-1) printf("\nno!");
else printf("\nYES! %d",p);
}
#define N 10
int find(int a[],int x)
{
int p,h,t;
p=-1;
h=0,t=N-1;
while(h<=t)
if(a[(h+t)/2]<x) h=(h+t)/2;
else if(a[(h+t)/2]>x) t=(h+t)/2;
else {p=(h+t)/2;break;}
return p;
}
main()
{
int p,m,a[N]={1,3,4,8,9,11,13,17,18,20};
scanf("%d",&m);
p=find(a,m);
if(p==-1) printf("\nno!");
else printf("\nYES! %d",p);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询