package com.talong; /** * 递归实现二分查找 * 时间复杂度:O(lgN) * 空间复杂度:O(lnN)(函数递归栈的空间) */ public class BinarySearchRecursion { /** * @param array 查找数组 * @param num 查找值 * @return 找到的数组索引,没有找到返回-1 */ public static int search(int [] array,int begin,int end,int num){ if(begin>end){ return -1; } int middle=(begin+end)/2; if(array[middle]==num){ return middle; }else if(array[middle]<num){ return search(array,middle+1,end,num); }else if(array[middle]>num){ return search(array,begin,middle-1,num); } return -1; } public static void main(String [] args){ int [] array=new int []{1,3,5,7,9,10,12,13,45}; int begin=0,end=array.length-1; int idx=search(array,begin,end,3); System.out.println(idx); } }
递归实现二分查找
最新推荐文章于 2024-04-20 21:11:35 发布