二分法查找代码实现
代码实现如下:
package com.liu.pro; public class binarySearch { public static void main(String[] args) { // 测试数组 int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; System.out.println(binarySearch(arr, 0, arr.length - 1, 1)); } public static int binarySearch(int[] arr, int left, int right, int val) { // 定义中间值的索引 int mid = (left + right) / 2; // 定义一个中间值,作为比较标准 int midVal = arr[mid]; // 如果满足left>right,则说明没有找到,返回-1 if (left > right) { return -1; } // 与中间的数进行比较,比较一共有三种情况 // 相等,则直接返回mid坐标 if (midVal == val) { return mid; // midVal>val,要找的值比中间值还要小,则向左递归 } else if (midVal > val) { return binarySearch(arr, left, mid - 1, val); // midVal>val,要找的值比中间值还要小,则向左递归 } else { return binarySearch(arr, mid + 1, right, val); } } }
测试结果: