c语言用函数实现二分法 c语言怎么用二分法

C语言:二分法

这段代码是求解方程f(x)=0在区间[-10,10]上的根的数值解。

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了睢阳免费建站欢迎大家使用!

方法的思想就是:一直选取区间中间的数值,如果发现中间的函数值与一侧函数值,异号,那么说明解在这个更小的区间中,采用eps=1e-5作为区间的极限大小,通过迭代的方法求解这个方程的数值解。

所以了解了上述思想,那么else if(f(a)*f(c)0) b=c; 说明的是 f(a)和f(c)异号,那么使用b=(a+b)/2缩小迭代区间,继续迭代;同理else a=c;说明f(a)和f(c)同号,那么使用a(a+b)/2缩小迭代区间,继续迭代!

(二分法)C语言程序

1、打开Python开发工具IDLE,新建‘search.py’。

2、F5运行程序,list1被正确排序,写这个的目的是说明二分法查找必须前提是一个有序的列表,如果一开始无序首先要排序,当数据量大的时候,快速排序是一个很好的选择,再进行二分法查找。

3、用递归的思想,递归就一定有结束条件。

4、if len(li)==1:   #li长度等于1,只比较这个列表元素与要查找到值return li[0]==item。

5、if len(li)==0: #li长度等于0,全部查找结束还是没有这个值  return False。

6、为程序添加main方法。

7、F5运行程序,正确打印出二分法查找结果,False True。

谁能用c语言帮我写个二分法的查找程序??

#includestdlib.h

void

sort(int

a[],int

n){

/*排序函数,要使用二分法查找就必须对数组进行排序*/

int

i,k;

for(i=0;in;i++){

int

min=i;

for(k=i+1;kn;k++)

if(a[min]a[k])min=k;

if(i!=min){

a[min]+=a[i];/*这里是运用加减法交换两个数*/

a[i]=a[min]-a[i];

a[min]-=a[i];

}

}

}

int

find(int

a[],int

n,int

key){/*二分法查找;参数:数组名,数组长度,查找关键字*/

int

min=0,max=n-1;/*二分法查找头尾变量*/

while(minmax){/*如果最头的变量值大于最尾变量的值,则查找不到,查找失败*/

int

cen

=

(min+max)/2;

if(a[cen]==key)

return

cen;/*如果查到,则返回关键字在排序数组的下标*/

if(cen==min

||

cen==max)break;/*如果中间变量等于头尾任一个变量,同样查找失败*/

if(a[cen]key)

max=cen;

else

min=cen;

}

return

-1;

}

void

main(){/*主程序只是为了证明两个函数的可行性,可以自己编写*/

int

a[]={14,10,25,36,87,95,10,12,13,8},i;

sort(a,10);

i=find(a,10,11);

if(i!=-1)

printf("be

found");

else

printf("no

found");

getch();

}

C语言中二分法的具体程序是什么呢?

举个例子:

//二分查找法//

# includestdio.h

void main()

{

int a[16],i,num,flag=0,top,bottom,mid;

//定义一个一维数组a[16]用来存放供查找用的数据,但只用a[1]——a[15]//

//num用来放要查找的数据,flag是表示是否找到的开关变量,top表示查找的起始位置,bottom表示查找的终止位置,mid表示top与bottom的中间位置//

char goon;

//变量goon为'y'或'Y'时表示继续下一轮查找,否则终止程序//

printf("请输入第1个数字:\n");

scanf(" %d",a[1]);

//依次输入第二到第十五个数,并要求输入的数递减//

for(i=2;i=15;i++)

{

printf("请输入第%d个数字:\n",i);

scanf(" %d",a[i]);

if(a[i]=a[i-1])

{

printf("请再次输入,它应该比上一个数小:\n");

scanf(" %d",a[i]);

}

}

//输出刚才输入的数//

printf("你刚才输入的数是:\n");

for(i=1;i=15;i++)

printf(" %d",a[i]);

printf("\n");

//查找循环开始//

do

{

printf("现在请输入你要查找的数:\n");//输入想要查找的数//

scanf(" %d",num);

top=15;

bottom=1;

mid=15/2+1;

if(numa[1] || numa[15])//如果要查找的数据不在规定范围内,令flag=1,输出超出范围的信息//

{

flag=1;

printf("你所要查找的数字不在范围内!\n");

}

while(flag==0 (top-bottom)0)//如果在规定的范围内,开始二分法查找//

{

if(num==a[mid])//找到所需数据,退出本层循环//

{

printf("你所要查找的数字是第%d个。\n",mid);

flag=1;

}

else if(numa[mid])//如果要查找的数据比a[mid]大,在前半数组查找//

{

top=mid+1;

mid=(top+bottom)/2;

}

else //如果要查找的数据比a[mid]小,在后半数组查找//

{

bottom=mid-1;

mid=(top+bottom)/2;

}

}

if(flag==0)//如果未找到数据,输出找不到的信息//

printf("无法找到你要找的数字!\n");

printf("是否继续查找?(Y/N):\n");//询问是否开始下一轮查找//

scanf(" %c",goon);

}while(goon=='y' || goon=='Y');

}


文章名称:c语言用函数实现二分法 c语言怎么用二分法
网站地址:http://csdahua.cn/article/doehdss.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流