1.二分法查找
二分法查找 :
1 建立在排序的基础之上
2 数据没有重复元素,如果有,先找到那个算哪个
3 用于查找固定有序的数据
算法实现 :
1 确定起始和结束位置
2 确定中间数据,判断中间数据是否为目标数据,如果是直接返回
3 如果目标数据小于中间数据,则 起始值不变,结束值 为 中间值 -1
4 如果目标数据大于中间数据,则 结束值不变,起始值 为 中间值 +1
5 如果 起始值 大于 结束值 终止比较,说明不存在
6 重复执行以上操作即可
//二分法查找
public static int search(int[] arr, int num) {
int count = 0;
// 起始位置
int startPos = 0;
// 结束位置
int endPos = arr.length-1;
// 中间下标
int m = (startPos+endPos) / 2;
while( startPos <= endPos){
count++;
if (arr[m] == num) {
System.out.println("count : "+count);
return m;
}
// 判断目标数据 是否大于中间值
if (num > arr[m]) {
startPos = m+1;
}
// 判断目标数据 是否小于中间值
if (num < arr[m]) {
endPos = m-1;
}
// 重算中间值
m = (startPos + endPos) /2;
}
System.out.println("count : "+count);
return -1;
}