c语言二分法怎么用,求例子!!
首先二分法必须让数列有序,比如说我要在 1 2 3 4 5 6 7 8 9 10中找到5.
#include<stdio.h>
intmain()
{
intlow=0,high=9,m,k,sign=0;
inta[10]=
{
1,2,3,4,5,6,7,8,9,10
};
scanf("%d",&k);
while(high>=low)
{
intm=low+(high-low)/2;
if(a[m]>k)high=m-1;
elif(a[m]<k)low=m+1;
el
{
printf("yes");
sign=1;
break;
}
}
if(sign==0)printf("no");
return0;
}
C语言中二分法的具体程序是什么呢?
举个例子:
//二分查找法//
#
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=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(num>a[1]
||
num
0)//如果在规定的范围内,开始二分法查找//
{
if(num==a[mid])//找到所需数据,退出本层循环//
{
printf("你所要查找的数字是第%d个。\n",mid);
flag=1;
}
el
if(num>a[mid])//如果要查找的数据比a[mid]大,在前半数组查找//
{
top=mid+1;
mid=(top+bottom)/2;
}
el
//如果要查找的数据比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语言二分法查找
#include <stdio.h>//不用math头文件
void main()
{int high = 9,low = 0,m,k,a[10]={1,2,3,4,5,6,7,8,9,10};//hing和low赋初值
scanf("%d",&k);
while (high>=low)//>=
{
m=(high+low)/2;
if(k<a[m]) high=m-1;//比较的是数值而不是下标
el if(k>a[m]) low=m+1;
el
{
printf("yes");
return;//这两句地方放错了
}
}
printf("no");
return;//if语句去掉
}
C语言:二分法
这段代码是求解方程f(x)=0在区间[-10,10]上的根的数值解。
方法的思想就是:一直选取区间中间的数值,如果发现中间的函数值与一侧函数值,异号,那么说明解在这个更小的区间中,采用eps=1e-5作为区间的极限大小,通过迭代的方法求解这个方程的数值解。
所以了解了上述思想,那么el if(f(a)*f(c)<0) b=c; 说明的是 f(a)和f(c)异号,那么使用b=(a+b)/2缩小迭代区间,继续迭代;同理el a=c;说明f(a)和f(c)同号,那么使用a(a+b)/2缩小迭代区间,继续迭代!
(二分法)C语言程序
1、打开Python开发工具IDLE,新建‘arch.py’。
2、F5运行程序,list1被正确排序,写这个的目的是说明二分法查找必须前提是一个有序的列表,如果一开始无序首先要排序,当数据量大的时候,快速排序是一个很好的选择,再进行二分法查找。
3、用递归的思想,递归就一定有结束条件。
4、if len(li)==1: #li长度等于1,只比较这个列表元素与要查找到值return li[0]==item。
5、if len(li)==0: #li长度等于0,全部查找结束还是没有这个值 return Fal。
6、为程序添加main方法。
7、F5运行程序,正确打印出二分法查找结果,Fal True。