1 //二分查找法非递归实现,在一个有序的数组中查找e元素的位置,找不到返回-1 2 public static int binarySearch(int[] data,int e){ 3 int l = 0; 4 int r = data.length - 1; 5 6 while (l <= r){ 7 int mid = (l + r) / 2; 8 9 if(e > data[mid]){ 10 l = mid + 1; 11 }else if(e < data[mid]){ 12 r = mid - 1; 13 }else { 14 return mid; 15 } 16 17 } 18 return -1; 19 }
1 //二分查找法的递归实现 2 public static int binarySearchRecursion(int[] data,int l,int r,int e){ 3 int mid = (l + r) / 2; 4 if(e > data[mid] ){ 5 return binarySearchRecursion(data,mid + 1,r,e); 6 }else if(e < data[mid] ){ 7 return binarySearchRecursion(data,l,mid - 1,e); 8 }else { 9 return mid; 10 } 11 }
