package arrsearch;
import java.util.Date;
public class BinarySearchDemo {
//二分查找的前提的数组中的值是从小到大的或者从大到小的
public static void main(String[] args) {
int[] arr = {1, 2, 3, 5, 6, 9, 11, 25, 36, 55};
int num = 11;
int Index = binary(arr, num);
System.out.println(Index);
}
private static int binary(int[] arr, int num) {
int max = arr.length - 1;
int min = 0;
//用最大值加最小值除二算出中间的索引位置
while (min <= max) {
int mid = (max + min) >> 1;
//判断索引处的值和要查找值的大小
//如果索引处的值比查询值大,那么查询的值就在索引值的左边
//如果索引处的值比查询值小,那么查询的值就在索引值的右边
if (arr[mid] < num) {
min = mid + 1;
} else if (arr[mid] > num) {
max = mid - 1;
} else {
return mid;
}
}
return -1;
}
}
10-26
1865