问题补充说明:编写程序,对于一维有序数组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;
}
//---------------------------------------------------------------------细该------
标签:二分,查找,来自