重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

二分法查找函数c语言 c++ 二分查找函数

C语言二分法查找

#include stdio.h//不用math头文件

成都创新互联专注于企业营销型网站建设、网站重做改版、陆港网站定制设计、自适应品牌网站建设、成都h5网站建设商城开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为陆港等各大城市提供网站开发制作服务。

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. 主要思想是:假设数据是按升序排序的,对于给定值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语言帮我写个二分法的查找程序??

#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语言 c++ 二分查找函数
转载源于:http://cqcxhl.com/article/ddgppeo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP