当前位置:神舟问>百科知识>二分来自查找

二分来自查找

2024-01-04 06:28:13 编辑:join 浏览量:574

问题补充说明:编写程序,对于一维有序数组a[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19},利用二分查找法查找数组中是否存在数据元素10。运行效果:不存在为10的元素。请按任意键继续

二分来自查找

//------------------------360问答---------------------------------------------------

#include<stdio.h>

#inc连决盐道适提lude<stdlib.h>

//利用二分查找算法在有a结般向树右差压升京怀_len个元素的a数井未距马短武制船杨奏蒸组中查找tofind,如果找到就返回下标,否则返回-1

intfind(int*a,inta_len,i受医深征材nttofind)

{

//b和e分别是查找区间的最小值和最大值的下标

intb=快价出太仍0,e=a_len-1;

//当查找区间不为头裂通垂就条怀收空时执行查找动作

while(b<=e)

{

//如果待查数字小于查找区间的中间元素,则将查找区间调整为只查区间前半部分

if(a[(b+e)/2]>tofind){

e=(b+e齐样南货知)/2-1;

}

//如果待查数字大于查找区间的中间元素,则将查找区间调整为只查区间后半部分

elseif(a[(b绿善官史乎试斯云长影械+e)/2]<tofind){

b=(b+e)/离发推陈民雷处非2+1;

}

//如待查数字等于于查找区间的中间元素,则完成查找盾画工作,返回该元素的下标

else前素则讨阶一方耐田亲return(b+e)/2;

}

//如果没有找到待查数字,则返回-1

retu弦理影小rn-1;

}

intmain(void)

{

inta[10]={1,3,5,7,9,11,13,15,17,19};

intn=10;

inti;

//如果二分查找结果返回-1,则输出没有找到数字的提示信息

if((i=find(a,10,n))==-1)printf("不存在为%d的元素\n",10);

//如否互意久态果找到了数字,将输出相应的提示信息

elseprin庆稳鲜议整写山难tf("元素%d在数组中的下标是%d\n",n,i达末阳载洲某);

//程序暂停,以便于观察程序输出结果,system()函数声明在stdlib.h中

system("pause");

//程序结束,返回。

return0;

}

//---------------------------------------------------------------------细该------

标签:二分,查找,来自

版权声明:文章由 神舟问 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.shenzhouwen.com/article/249553.html
热门文章