分治算法-二分查找
Posted aiT小白逆袭记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分治算法-二分查找相关的知识,希望对你有一定的参考价值。
分治算法
分治,即分而治之,分一般指将规模为N的问题分为多个小规模问题,这些问题相互独立又性质相同。治,指的是对划分完的小规模问题进行求解,进而推出原问题的解。
二分查找法
二分查找法,也称为折半查找法,是一种效率比较高的查找方法,它充分利用了元素之间的次序关系,采用分治策略,时间复杂度最坏为O(log n),它的操作对象必须是有序排列的。
代码实现(演示语言c++):
int BinarySearch(int n,int s[],int x) { //传入数组长度n,数组s[],要查找的数x
int low=0,high=n-1; //low表示左端,hign表示右端
while(low<=high) {
int middle = (low+high)/2; //产生中间值middle
if(x==s[middle]) //判断若s[middle]等于x,则直接return结果
return middle;
else if(x>s[middle]) //若x>s[middle],说明x在右半部分
low = middle+1; //将左端坐标转移至middle+1处,即右半部分首部
else //若x<s[middle],说明x在左半部分
high = middle-1; //将右端坐标转移至middle-1处,即左半部分尾部
}
return -1; //表示没有在数组中找到值x,返回-1
}
以上是二分查找法的代码实现过程,它的基本思想是:将一组有序的数组元素分成个数大致相同的两半,取a[middle=(low+hign)/2]处元素与欲查找的x作比较,如果相等则找到x算法结束,否则根据大小判断对middle左半部或者右半部重复以上步骤继续搜索。
本篇内容分享就到这里,希望各位能够通过二分查找法这个例子理解分治算法的基本思想,后续我会推出分治算法的更多相关例子如合并排序法、快速排序法等,帮助大家深入理解。
如有帮助,点击在看
以上是关于分治算法-二分查找的主要内容,如果未能解决你的问题,请参考以下文章