二分法
一、非递归方法:
需要是有序数组
二分法查找的思路如下:
(1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。
(2)如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。
(3)如果某一步数组为空,则表示找不到目标元素。
public static int binarySearch(int[] arr,int target){int low=0;int high=arr.length-1;while(low<=high) {int mid=(int)Math.floor((low+high)/2);System.out.println(mid);if(target==arr[mid]) {return mid;}else if(target>arr[mid]){low=mid+1;}else {high=mid-1;}}return -1;}
一、递归方法:
int index = Arrays.binarySearch(array, k);Java中含有的搜索函数
public static int binarySearch(int[] arr,int low,int high,int target){if(low>high)return -1;int mid=Math.round((low+high)/2);if(target==arr[mid]){return mid;}else if(target<arr[mid]) {high=mid-1;return binarySearch(arr,low,high,target);}else {low=mid+1;return binarySearch(arr,low,high,target);}}
