二分查找
二分查找可能是最常见的笔试考题之一
package binarySearchDemo;
import java.util.Scanner;
public class binary_search {
public static void main(String[] args) {
Integer [] arr = new Integer [] {2,4,6,8,10,12,14,16,18};
Scanner scan = new Scanner(System.in) ;
System.out.println("请输入一个数");
int key = scan.nextInt() ;
System.out.println(arr[binary_search1(arr,key)]);
System.out.println("地址角标是"+binary_search1(arr,key));
}
static int binary_search1(Integer [] arr,int k){
int key = k ;
//定义 两端角标
int low = 0 ;
int high = arr.length-1 ;
while (low<=high) {
int mid = low+high>>>1 ;//一定要放在循环里面 因每次判断都要更新mid
if(arr[mid] == key){
return mid ;
}else if (key < arr[mid]){
high = mid-1 ;
//给定值<中间结果值 说明所要查找的在数组的左半部 又因mid位置数字不相等 所以high = mid-1
}else if (key>arr[mid]){
low = mid+1 ;
}
}
return -1;
}
}