实现:递归思路实现二分查找,找到返回下标,否则返回-1.
思路:思路是将查找值与数组最中间值比较,若查找值相等数字最中间值就找到了,返回下标值;若查找值小于最中间值,则把最左边到中间作为一个数组再进行查找;若查找值大于最中间值,则把中间到最右边作为一个数组再进行查找.
1 public class ArrayDemo{
2 //参数a 代表查找的数组,参数left代表数组的最左边值的下标,参数right代表数组的最右边值的下标,参数n代表的是查找值
3 public static int binarySearch(int[] a,int left,int right,int n){
4 //若左边值的下标大于最右边的下标,即代表查找完毕,没有找到该值,返回-1
5 if(left>right){
6 return -1;
7 }
8 int mid = (left+right)/2;
9 if(a[mid] == n){
10 return mid;
11 }else if(a[mid] > n){
12 return binarySearch(a,left,mid-1,n);
13 }else{
14 return binarySearch(a,mid+1,right,n);
15 }
16 }
17
18 public static void main(String[] args) {
19 int[] a = {1,2,5,7,9};
20 System.out.println(" " + binarySearch(a,0,a.length-1,3));
21 }
22 }