2.6 查找算法之二分法查找
图例演示:
- 查找的目标数组必须是有序的
代码演示:
TestBinarySearch.java
package com.kami.leetcode.alg;
/**
* 查找算法之二分法查找
*/
public class TestBinarySearch {
public static void main(String[] args) {
//目标数组
int[] arr = {1, 2, 3, 4, 5, 6, 7};
//查找值
int num = 7;
//开始位置
int begin = 0;
//结束位置
int end = arr.length - 1;
//中间位置
int mid = (begin + end)/2;
//记录目标位置
int index = -1;
//循环查找
while (true){
//什么情况下没有这个元素
//开始位置在结束位置之后或重合,就没有这个元素了
if(begin >= end){
index = -1;
}
//判断中间的元素是不是要查找的元素
if(arr[mid] == num){
index = mid;
break;
}else { //中间这个元素不是我们要找到元素
if(arr[mid] > num){ //判断中间这个元素是不是比目标元素大
//把结束位置调整到中间位置前一个位置
end = mid - 1;
}else { //中间这个元素比目标元素小
//把开始位置调整到中间位置后一个位置
begin = mid + 1;
}
//取出新的中间位置
mid = (begin + end)/2;
}
}
System.out.println("index: " + index);
}
}