//二分查找法非递归实现,在一个有序的数组中查找e元素的位置,找不到返回-1 public static int binarySearch(int[] data,int e){ int l = 0; int r = data.length - 1; while (l <= r){ int mid = (l + r) / 2; if(e > data[mid]){ l = mid + 1; }else if(e < data[mid]){ r = mid - 1; }else { return mid; } } return -1; }
//二分查找法的递归实现 public static int binarySearchRecursion(int[] data,int l,int r,int e){ int mid = (l + r) / 2; if(e > data[mid] ){ return binarySearchRecursion(data,mid + 1,r,e); }else if(e < data[mid] ){ return binarySearchRecursion(data,l,mid - 1,e); }else { return mid; } }
