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

Python012

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

举个例子:

//二分查找法//

#

include

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=2i<=15i++)

{

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

scanf("

%d",&a[i])

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

{

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

scanf("

%d",&a[i])

}

}

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

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

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

printf("

%d",a[i])

printf("\n")

//查找循环开始//

do

{

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

scanf("

%d",&num)

top=15

bottom=1

mid=15/2+1

if(num>a[1]

||

num

0)//如果在规定的范围内,开始二分法查找//

{

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

{

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

flag=1

}

else

if(num>a[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')

}

二分法查找还是二分法求方程式解

#include<stdio.h>

#include <math.h>

float f( float a )

{

    return a*a*a + a - 1

}

float jie( float a, float b )

{

    /* x*x*x + x -1 = 0 */

    float m = (a+b)/2

    printf( "a=%f,b=%f\n", a, b)

    printf( "fm=%f, fa=%f, fb=%f\n", f(m), f(a), f(b) )

    if ( f(a)*f(b)> 0 )

    {

        printf( "起始区间不正确\n" )

        return m

    }

    if ( fabs(f(m)) < 0.0001 )

        return m

    if ( f(m)*f(a) > 0 )

        return jie( m, b )

    else

        return jie( a, m )

}

int main()

{

    float a, b, x

    printf( "输入起始区间: " )

    scanf( "%f %f", &a, &b )

    x = jie( a, b )

    printf( "x^3+x-1=0 x= %.3f\n", x )

}

1、函数二分法是什么意思。

2、绘画二分法是什么意思。

3、哲学二分法是什么意思。

4、矛盾二分法是什么意思。

1.对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。

2. 二分法(Bisection method) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点。