一.二分查找
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 }