欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 编程语言 > java >内容正文

java

java递归实现二分法 -尊龙游戏旗舰厅官网

发布时间:2025/1/21 java 20 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 java递归实现二分法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
/* 递归实现二分法的进化 */import java.util.scanner;public class recursionnext2{public static void main(string[]args){//接收一个要寻找的数system.out.println("请输入:");scanner sc=new scanner(system.in);int num = sc.nextint();int []a={1,2,3,4,5,6,7,8,9};int front = 0;int end=a.length-1;int index=findarray(a,front,end,num);system.out.println(index);}//递归实现二分法public static int findarray(int []b,int front,int end,int num){int index=-1;int mid = (front end)/2; if(b==null){return index;}if(front<=end){if(b[mid]==num){return mid;}else if(b[mid]num){return findarray(b,front,mid-1,num);}}return -1;}}

分析此程序:

  首先二分法:

/* 二分法 */import java.util.scanner;public class bisection{public static void main(string[]args){int []a={1,2,3,4,5,6,7,8};scanner sc=new scanner(system.in);system.out.println("请输入你要找的数字");int num=sc.nextint();//调用searcharray()寻找numint index=searcharray(a,num);system.out.println(index);}//二分法public static int searcharray(int[]a,int num){int front = 0;int end=a.length-1;int count =0;//判断数组是否为空if(a==null){return -1;}while(front<=end){int mid=(front end)/2;system.out.println("第" ( count) "次");if(a[mid]==num){return mid;}else if(a[mid]num){end=mid-1;}}return -1;}}

递归实际就是实现了循环的作用!

二分法首先你要确定你所穿的数组不是空,并且使数组升序排列

 //判断数组是否为空if(a==null){return -1;}

第二限制循环的条件

保证front<=end,只有在这个前提下找的的位置才保证是在数组内部寻找

然后再去判断a[mid]是否等于num,若a[mid]num相同原理....二分法是用front 和end来限制,让a[mid]去比较。

while(front<=end){int mid=(front end)/2;system.out.println("第" ( count) "次");if(a[mid]==num){return mid;}else if(a[mid]num){end=mid-1;}}


转载于:https://blog.51cto.com/11900208/1866008

总结

以上是尊龙游戏旗舰厅官网为你收集整理的java递归实现二分法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

网站地图