二分查询
话不多说 直接上代码(Coding):
/** * 二分查找 * 二分查找是一种算法 在一个有序的元素列表中 查询一个元素 如果存在 则返回该元素的索引 没有则返回null * 比一般查询速度快 对半查询 */ public class Demo01 { public static void main(String[] args) { // 1、定义一个有序的元素列表 int[] numList = new int[]{1, 3, 5, 7, 9}; // 2、输入要查询的数字 int searchNum = 9; // 3、查询操作 Integer index = searchIndex(numList, searchNum); if (index == null) { System.out.println("您要查询的数字:" + searchNum + " 不存在列表中!"); return; } // 4、输出索引 System.out.println("您要查询的数字:" + searchNum + " 的索引是:" + index); } /** * 二分查询 * * @param numList * @param searchNum * @return */ private static Integer searchIndex(int[] numList, int searchNum) { // a、定义一个最低值 int low = 0; // b、定义一个最高值 列表的长度-1 int high = numList.length - 1; // d、根据要查询的数字 来修改的对应的low或者high 这个查询算法是个循环 直到两个(最低超出最高的索引 才退出循环) while (low <= high) { // c、获取中间值的索引 向下取整 int mid = (low + high) / 2; // 三种情况: if (numList[mid] == searchNum) { // 1、如果相等 等于中间值 那直接返回 return mid; } else if (searchNum > numList[mid]) { // 2、猜的数字大于中间值 修改low的值 将low移动到中间去 low = mid + 1; } else if (searchNum < numList[mid]) { // 3、猜的数字小于中间值 修改high的值 将high移动到中间去 high = mid - 1; } } return null; } }