package com.atguigu.search;/** * ClassName: <br/> * Description: <br/> * Date: 2021-02-23 15:14 <br/> * <br/> * * @author yufengming * @version 产品版本信息 2021年02月23日15:14分 yufengming(yufengming@travelsky.com) 新建<br/> * <p> * 修改记录 * @email yufengming@travelsky.com * @project data_algorithm * @package com.atguigu.search */public class BinarySearch { public static void main(String[] args) { int arr[] = {1, 9, 11, -1, 34, 89}; // 没有顺序的数组 int resIndex = binarySearch(arr, 0, arr.length-1, 1); System.out.println(resIndex); } /** * 二分查找算法 * * @param arr 数组 * @param left 左边的索引 * @param right 右边的索引 * @param findVal 要查找的值 * @return 找到返回下标, 没有找到返回-1 */ public static int binarySearch(int[] arr, int left, int right, int findVal) { // 当left > right 时,说明 递归完毕,但是没有找到 if (left > right) { // 么有找到就返回 -1 return -1; } int mid = (left + right) / 2; int midVal = arr[mid]; if (findVal > midVal) { // 向右递归 return binarySearch(arr, mid + 1, right, findVal); } else if (findVal < midVal) { return binarySearch(arr, left, mid - 1, findVal); } else { // 找到了 return mid; } }}