1. 二分查找算法――循环
public static int search(int[] arr,int k){ int start=0; int end=arr.length-1; while(start<=end){ int mid=(start+end)/2; if(arr[mid]==k) return mid; else if(arr[mid]>k) end=mid-1; else start=mid+1; } return -1; }
2. 二分查找算法――递归
public static int search2(int[] arr,int k,int start,int end){ if(start>end) return -1; int mid=(start+end)/2; if(arr[mid]==k) return mid; else if(arr[mid]>k){ return search2 (arr,k,start,mid-1); }else{ return search2(arr,k,mid+1,end); } }
测试:
public static void main(String[] args) { int [] arr={2,4,5,9,10,24}; int k=9; System.out.println(search(arr,k)); System.out.println(search(arr,2)); System.out.println(search(arr,24)); System.out.println(search(arr,0)); System.out.println(search2(arr,k,0,arr.length-1)); System.out.println(search2(arr,2,0,arr.length-1)); System.out.println(search2(arr,24,0,arr.length-1)); System.out.println(search2(arr,0,0,arr.length-1)); }
来源:博客园
作者:Temprol
链接:https://www.cnblogs.com/yaogungeduo/p/11636272.html