c语言实验报告的二分法查找,跪求各位高手帮助

假如一维数组a[N]中的元素是一个从小到大排序的有序表,编写一个程序从a中二分法查找出其值等于给定值x的元素

#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);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-07
二分法就是先从中间判断大小,然后在比较,在判断,不是太难追问

不是数学求未知数的二分法哦,是c语言编写程序的

追答

你有具体的题目吗?
把具体的题目给我发过来

追问

假如一维数组a[N]中的元素是一个从小到大排序的有序表,编写一个程序从a中二分法查找出其值等于给定值x的元素。(就是这个)

追答

我的邮箱是782226975@qq.com
明天给你答案,中不中?

追问

好的,请你直接发到百度这里就行了,谢谢

追答

int Binsch(int[] a, int key)
{
int low = 0;
int high = a.Length - 1;
while (low <= high)
{
int mid = (low + high) / 2;
if (key == a[mid])
{
return mid; //返回找到的索引值
}
else
{
if (key < a[mid])
high = mid - 1;
else
low = mid + 1;
}
}
return -1; //查找失败
}

二分法求解方程2的x次方加3x=7的近似根 c语言程序设计
float root(float x1,float x2){ float y1,y2,y3,c,x;y1=f(x1); y2=f(x2);if (y1*y2<0){do{ c=(x1+x2)\/2;y3=f(c);if(y3=0){ x=c;return x;} else if(y1*y3>0)x1=c;else if(y1*y3<0)x2=c;} while(fabs(x1-x2)<1e-6);} return x1;} ...

编程高手请进!(C语言)
printf("\\n NEXT?(Y\/N):");\/*选择是否重新游戏*\/ scanf("%c",&yes);} } 2.include <stdio.h> void main(){ int gj, mj, xj, t1, t2;for (gj=1; gj<=20; gj++){ for (mj=1; mj<34; mj++){ xj=100-gj-mj;t1=xj%3;t2=5*gj+3*mj+xj\/3;if (t1==0&&t2==100...

相似回答