二分查找是比较简单的一种搜寻方式,但是它必须基于一个已排序的数组,换句话说的话,也就是二分查找是需要一个比较来判断是往哪一方缩小查找区间:
建议查找益于比较的数据:例如数字
代码上:
/*对分查找*/
#include<stdio.h>
int BinarySearch(const int A[], int X, int N );//定义对分查找函数 函数的参数为(元素数组, 查找的元素, 数组的长度 )
int main()
{
int a[]={1,2,3,4,5,6,7};//自定义的一个数组
int b = BinarySearch( a, 5, 7);//调用对分查找函数
printf("%d\n", b);//打印出该元素在数组的位置
return 0;
}
int BinarySearch(const int A[], int X, int N )//对分查找函数
{
int Low;//查找区间的左侧位置
int Mid;//查找区间的中间位置
int High;//查找位置的右侧位置
Low = 0; High = N - 1;
while( Low <= High){//查找开始,直到区间的左侧=右侧结束查找,即查找区间为一个元素时
Mid = ( Low + High) / 2;//初始化区间中间位置
if( A[Mid] < X){//查找数据大于区间中间位置,查找区间缩小向右侧
Low = Mid + 1;
}
else if( A[Mid] > X){//查找数据小于区间中间位置,查找区间缩小向坐侧
High = Mid -1;
}
else
return Mid; /*Found*/
}
return -1; /*Not Found*/
}
注意要点:缩小查找区间时,向右侧缩小时,Low = Mid + 1;向左侧缩小时,High = Mid - 1;
原文链接: https://www.cnblogs.com/wykxldz/p/13191837.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/358849
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!