您的位置首页生活百科

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

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

的有关信息介绍如下:

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

举个例子://二分查找法//#includevoidmain(){inta[16],i,num,flag=0,top,bottom,mid;//定义一个一维数组a[16]用来存放供查找用的数据,但只用a[1]——a[15]////num用来放要查找的数据,flag是表示是否找到的开关变量,top表示查找的起始位置,bottom表示查找的终止位置,mid表示top与bottom的中间位置//chargoon;//变量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",#);top=15;bottom=1;mid=15/2+1;if(num>a[1]||num0)//如果在规定的范围内,开始二分法查找//{if(num==a[mid])//找到所需数据,退出本层循环//{printf("你所要查找的数字是第%d个。\n",mid);flag=1;}elseif(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');}