03.递归二分法查找
目录介绍
- 01.题目要求
- 02.问题分析
- 03.实例代码
01.题目要求
- 问题如下所示:
- 一个一系列数组,然后找到某个值的索引
02.问题分析
- 一定是有序表,升序降序都可以
03.实例代码
- 如下所示
/** * @param array 有序数组,但不限于数组 * @param start 开始查找的数组下标 * @param end 结束查找的数组下标 * @param searchValue 要搜索的值 * @return */ public static int search(int[] array, int start, int end, int searchValue){ if (array != null && array.length > 0){ int middle = (start + end) / 2; int middleValue = array[middle]; if (searchValue == middleValue){ return middle; }else if (searchValue < middleValue){ //查询值小于中值,在中值前面再次搜索,缩小范围 return search(array, start, middle-1, searchValue); }else { //查询值大于中值,在中值后面再次搜索,缩小范围 return search(array, middle+1, end, searchValue); } }else { return -1; } }
- 测试结果
public static void main(String[] args) { int[] array = {1,3,5,7,9,12,14,15,19,20,22,23,28,30}; System.out.println(search(array, 0, array.length-1, 20)); }