二分查找法–加强版
package com.xmaven.test;
/**
* @Author: Ambition
* @Description TODO
* @Date: 2021/9/14 5:52 下午
* @Version 1.0
*/
public class BinarySearchDemo {
public static void main(String[] args) {
int[] list = {2, 4, 7, 10, 11, 45, 50, 59, 60, 66, 69, 70, 79};
System.out.println(binarySearch(list, 2));
System.out.println(binarySearch(list, 11));
System.out.println(binarySearch(list, 12));
System.out.println(binarySearch(list, 1));
System.out.println(binarySearch(list, 3));
}
/**
* @param list 查询的数组
* @param key 查找的元素
* @return 如果return >= 0 找到正确的索引 如果 return < 0 找不到正确的索引 返回值的绝对值就是我们需要插入的元素的索引位置
*/
public static int binarySearch(int[] list, int key) {
int low = 0;
int high = list.length - 1;
while (high >= low) {
int mid = (high + low) / 2;
if (key < list[mid]) {
high = mid - 1;
} else if (key == list[mid]) {
return mid;
} else {
low = mid + 1;
}
}
return -low - 1;
}
}
评论区