二分法查找c语言程序代码(二分法查找的c语言编程题目)

http://www.itjxue.com  2023-03-16 09:33  来源:未知  点击次数: 

C语言如何用二分法查找一个数.我要一个例题

//二分法查找一个数,原数列必须是有序的,

//有个问题,当数列中有相同的数怎么处理,也就是只找到其中一个

void binsrch( int m[N],int k){

int low,high,mid;

low=0;high=N-1;

while (low=high){

mid=(low+high)/2;

if (km[mid])

high=mid-1;

if (km[mid])

low=mid+1;

if (k==m[mid]){

printf("找到此数在数组的%d位,值为%d",mid+1,k);

return;

}

}

printf("没有找到此数,非常报歉");

return;

}

c语言编程二分查找

好久不写了

写一个程序,建立N元整型数组,然后输入查找的整数x,查找x是否包含在数组中,查找用函数实现,若查找成功,返回x在数组中的第一次出现的下标,查找失败,返回-1

源程序:

#include"stdio.h"

#define N 10

int locate(int a[N],int x)

{int h,r,m;

h=0;r=N-1;m=(h+r)/2;

while(h=rx!=a[m])

if(xa[m]) {r=m-1;m=(h+r)/2;}

else {h=m+1;m=(h+r)/2;}

if(hr) return -1; /*查找失败,返回-1*/

return m; /*查找成功,返回有效下标m */

}

void upinsert(int a[],int i) /*插入排序 (升序)*/

{int x,j;

x=a[i];j=i-1;

while(j=0a[j]x) {a[j+1]=a[j];j--;}

a[j+1]=x;

}

void main()

{int a[N],x,k,n;

printf("input %d integers:\n",N);

for(k=0;kN;k++) {scanf("%d",a+k);upinsert(a,k);}

printf("input x=") ;scanf("%d",x);

n=locate(a,x);

for(k=0;kN;k++) printf("%4d",a[k]);

printf("\n fist position=%d\n",n);

}

没有错误,我试过了

求二分法查找演示C语言源代码

二分法查找算法:

1.?主要思想是:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段 中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。

2. 时间复杂度: ?O(log2n)。

3. C语言源代码(小例子)

search函数即为核心代码:递归查找

#includestdio.h

int?search(int?*a,?int?num,?int?low,?int?high)

{

int?mid?=(low?+?high)/2;

if(low=high)

{

if(num??a[mid])

return?search(a,?num,?low,?mid-1);?//加return

if(num??a[mid])

return?search(a,?num,?mid+1,?high);//加return

if(num==a[mid])?????????????????????

return?1;

}

else

return?0;

}

int?main(){

int?a[11]?=?{0,?1,?2,?3,?4,?5,?9,?11,?12,?13,?15};

if(search(a,?11,?0,?10)==1)

printf("success!!");

else?

printf("failed!!");

}

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(numa[1]

||

num

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语言二分法查找

#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(ka[m]) high=m-1;//比较的是数值而不是下标

else if(ka[m]) low=m+1;

else

{

printf("yes");

return;//这两句地方放错了

}

}

printf("no");

return;//if语句去掉

}

(二分法)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。

(责任编辑:IT教学网)

更多

推荐思科认证文章