九.查找算法
一.二分查找
1.非递归实现
索引 while
left<=right
1 public static int binarySearch(int[] arr,int key) { 2 int left=0; 3 int right=arr.length-1; 4 while(left<=right) { // 小于等于<= 5 int mid=(left+right)/2; 6 if(key==arr[mid]) 7 return mid; 8 else if(key<arr[mid]) 9 right=mid-1; 10 else 11 left=mid+1; 12 } 13 return -1; //没找到返回-1 14 }
2.递归实现(很有参考价值)
1 public static int binarySearch2(int[] arr,int key,int left,int right) { 2 int mid=(left+right)/2; 3 4 if(left>right) //递归结束条件 5 return -1; 6 if(key==arr[mid]) 7 return mid; 8 else if(key<arr[mid]) 9 return binarySearch2(arr, key,left,mid-1); 10 else 11 return binarySearch2(arr, key, mid+1, right); 12 }