二分就记得是边界条件真是日了狗,一个月不看就忘光了 算法咋这么难,艹
这玩意就像一个二叉树一样,所以时间复杂度就是logn嘛
kafka的日志缩影也用到了二分,kafka 牛逼
二分法是基于有序数组实现的,因为他要随机访问地址啊,啥也别说了,写个二分算求
public int search(int[] arr,int target){if(arr==null){return -1;}int low = 0;int high = arr.length-1;while (low<high){int mid = (low+high)/2;if(arr[mid]==target){return mid;}else if(target>arr[mid]){low = mid+1;}else {high = mid -1;}}return -1;}
递归做法
public int rsearch(int arr[],int low,int high,int targer){if(low>high){return -1;}int mid = (low+high)/2;if(arr[mid] == targer){return mid;}else if(targer>arr[mid]){return rsearch(arr,mid+1,high,targer);}else {return rsearch(arr,low,mid-1,targer);}}
