递归和非递归两种方式实现二分法查找(java)

来源:互联网 发布:赚流量的软件 编辑:程序博客网 时间:2024/05/21 05:44
public class BinarySearch {public static void main(String[] args){int[] arr = {1,3,5,7,9,11,13,15,17};System.out.println(search(arr,13));System.out.println(search1(arr,1,0,arr.length-1));}public static int search(int[] arr,int n)//非递归{int low = 0;int high = arr.length-1;while(low<=high){int mid = (low+high)/2;if(arr[mid]==n)return mid;if(arr[mid]<n){low=mid+1;}else if(arr[mid]>n){high=mid-1;}}return -1;}public static int search1(int[] arr,int n,int begin,int end)//递归{int mid=(begin+end)/2;if(n<arr[begin] || n>arr[end] || arr[begin]>arr[end]){return -1;}if(arr[mid]<n){return search1(arr,n,mid+1,end);}else if(arr[mid]>n){return search1(arr,n,begin,mid-1);}elsereturn mid;}}

2 0