分治算法-二分查找

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左半部或者右半部重复以上步骤继续搜索。


本篇内容分享就到这里,希望各位能够通过二分查找法这个例子理解分治算法的基本思想,后续我会推出分治算法的更多相关例子如合并排序法、快速排序法等,帮助大家深入理解。

分治算法-二分查找
END






如有帮助,点击在看



以上是关于分治算法-二分查找的主要内容,如果未能解决你的问题,请参考以下文章

C/C++ 分治算法(二分查找算法递归实现)

C/C++ 分治算法(二分查找算法递归实现)

分治算法——二分查找STL函数库的应用第五弹——二分函数

分治算法----折半查找----递归二分算法

分治法应用之二分查找 快速排序递归排序

递归分治算法之二维数组二分查找(Java版本)