本文主要详细介绍了半查找法的C语言实现。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
对折搜索法也叫二分搜索法。顾名思义,就是把数据分成两半,然后确定你要找的是哪一半的键,然后重复上述步骤,直到找到目标键;
注意:半查找法只适用于已有序列的数组和数据的操作!
显然,半搜索方法比其他搜索方法(如顺序搜索方法)效率高得多。
让我们进行一次实际操作来理解二分搜索法的意思。
例如:数组arr []={8,7,9,6,4,1,2,5,3,10,11}中;在中找到key=7的位置;首先,我们必须对数组arr中的数据成员进行排序。arr[]={1,2,3,4,5,6,7,8,9,10,11 };
如图:记录这组数据的小端为低,大端为高,中间值为中;
用二分法搜索时,将搜索到的key与mid进行比较,例如key=7,以缩小mid和high之间的搜索范围;
可以发现如图key=low=7;
注意: (敲黑板)如果中间数mid不是整数,需要进行取整。
代码如下:
# includestdio.h
Intbinsearch (Intarr [],Intlen,int key)//二分搜索法方法(二分法)
{
int low=0;//定义初始最小值
int high=len-1;//定义初始最大值
int mid//定义中间值
while(低=高)
{
mid=(低高)/2;//找到中间值
If(key==arr[mid]) //确定min和key是否等于2020111122411718
返回mid
Else if(keyarr[mid]) //如果keymid,则新区域为[mid 1,high]。
低=中1;
Else //if keymid,新区为[low,mid-1]。
高=中-1;
}
return-1;//如果数组中没有目标值键,返回-1;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10,11 };//首先,对数组arr进行排序
printf('%d \n ',BinSearch(arr,(sizeof(arr)/sizeof(arr[0])),7));
返回0;
}
运行结果如下:
希望对你有帮助!
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。