public static int findNumFromArr(long[] arr,long num,int lo,int hi){ int res=-1; if(arr==null||lo>hi)return res; int mid = lo +(hi-lo)/2; if(arr[mid]<num){ return findNumFromArr(arr, num,mid+1,hi); }else if(arr[mid]>num){ return findNumFromArr(arr, num,lo,mid-1); }else{ return mid; } } // [6,7,1,2,3,4,5]// [4,5,6,1,2]// [4,5,6,3,4] /** * 在有序循环数组中找到最小值 */ public static int findMin(long[] arr,int lo,int hi){ int mid = lo +(hi -lo )/2; if(lo==hi)return lo; //最小值在最左边 if(arr[lo] < arr[hi]){ return lo; }else { if(arr[lo]>arr[mid]){ return findMin(arr,lo+1,mid); }else{ if(arr[mid]>arr[hi]){ return findMin(arr,mid+1,hi); }else{ return findMin(arr,mid,hi-1); } } } } public static void main(String[] args) { long[] arr = {4,4,5,5,4};// System.out.println(findNumFromArr(arr, 7,0,arr.length-1)); System.out.println(findMin(arr,0,arr.length-1)); }}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦