二分查找法:
Java代码思路,看详细注释。
public class er_fen_cha_zhao {
public static void main(String[] args) {
int a[] = {1, 2, 6, 8, 10, 12, 15};//1.排序好的数组。)
int target = 15; //2.要查找的目标值
//3.二分法首先从数组中间开始找。设下标初始值为中间值,数组长度加1是因为数组长度有时候为奇数。
int index = (a.length + 1) / 2;
int target_index = 0;//4.这是找到后的目标数组下标值。
for (int i = 0; i < a.length; i++) {
if (target == a[index]) { //5.首先判断查找的值是否和目标值相等。
target_index =index; //6.相等的话结束循环就行了
break;
} else if (target > a[index]) {//7.如果目标值比查找的值大,给下标重新赋值是
index = (index + 1) / 2 + index;//8.之前的下标值加之前下表值得二分之一,这是二分后数组的后一半部分
} else {
index = index - (index + 1) / 2;//9.这是数组二分后的前一半部分
}
}
System.out.println(target_index);//10.数组是从0开始的,结果要比数组本身位置少1。
}
}
PS:自己写一遍代码就掌握了。