package com.jmmq.load.jim.algorithm;
/**
* 二分查找
*/
public class BinarySearchPrc {
public static void main(String[] args) {
int[] c = new int[]{1,5,7,10,11,15,26,48,69};
int target = 26;
int position = binarySearch(c, target);
if(position == -1){
System.out.println("在数组中未查找到数 " + target);
} else {
System.out.println("数字"+ target + "是数组中第 " + (position + 1) + " 位数");
}
}
/**
* @param c 排序后的数组(升序)
* @param target 查找目标
* @return
* high 高位
* low 低位
* 循环中修改 high和low来减少循环次数
*/
public static int binarySearch(int[] c, int target){
int high = c.length -1;
int low = 0;
for(int i=0; i < high; i++){
int middle = (high + low) / 2;
if(c[middle] == target){
return middle;
} else if(c[middle] > target) {
high = middle;
} else if(c[middle] < target){
low = middle;
}
}
return -1;
}
}
数字26是数组中第 7 位数