二分查找

xiaoxiao2021-02-28  102

二分查找是一种效率非常高的查询算法,其简单思想是:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分

这里给出二分查找算法的Java实现:

int BinSearch(int Array[],int low,int high,int key) { if (low<=high) { int mid = (low+high)/2; if(key == Array[mid]) return mid; else if(key<Array[mid]) //移动low和high return BinSearch(Array,low,mid-1,key); else if(key>Array[mid]) return BinSearch(Array,mid+1,high,key); } else return -1; }

最近看到A到一道题,已知一个数组是递增或者递减,或者是递增递减交错,求该数组的峰值,算法要求时间复杂度在O(logn), 有思路的可以在评论区留言,大家一起讨论,谢谢!

转载请注明原文地址: https://www.6miu.com/read-52145.html

最新回复(0)