java实现 二分查找 非递归与递归2种方式
2018-03-30 09:24
731 查看
非递归,利用循环package file;import java.util.Scanner;public class Main {public static void search(int[] a,int key){int low=0;int high=a.length-1;int mid;while(low<=high){mid=(low+high)/2;if(a[mid]==key){System.out.println(mid);return;}else if(a[mid]>key){high=mid-1;}else{low=mid+1;}}return;}public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.println("输入数组长度:");int len=in.nextInt();System.out.println("输入数组:");int[] a=new int[len];for(int i=0;i<len;i++){a[i]=in.nextInt();}System.out.println("输入key:");int key=in.nextInt();search(a,key);}}递归方法package file;import java.util.Scanner;public class Main {public static int search(int[] a,int key,int start,int end){if(start>end)return -1;int mid=(start+end)/2;if(a[mid]==key){System.out.println(mid);return mid;}else if(a[mid]>key){return search(a,key,start,mid-1);}else{return search(a,key,mid+1,end);}}public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in);System.out.println("输入数组长度:");int len=in.nextInt();System.out.println("输入数组:");int[] a=new int[len];for(int i=0;i<len;i++){a[i]=in.nextInt();}System.out.println("输入key:");int key=in.nextInt();System.out.println(search(a,key,0,len-1));}}
相关文章推荐
- 二分查找递归和非递归(java实现)
- 【转】Java实现折半查找(二分查找)的递归和非递归算法
- java两种实现二分查找方式
- java递归实现二分查找
- Java实现二分查找--非递归
- 二分查找的两种实现方式(JAVA)
- 二分查找的递归与非递归实现【Java版】
- Java实现折半查找(二分查找)的递归和非递归算法
- Java实现数组二分查找及递归二分查找
- Java实现折半查找(二分查找)的递归和非递归算法
- java使用递归和非递归实现二分查找
- 二分查找的两种实现方式--循环和递归
- Java实现折半查找(二分查找)的递归和非递归算法
- 二分查找的递归/非递归方式C++实现
- 二分查找 java递归和非递归实现
- 用递归实现二分查找 JAVA
- Java实现折半查找(二分查找)的递归和非递归算法
- 二分查找的两种实现方式(递归和非递归)--python实现
- java实现二分查找-两种方式
- Java实现折半查找(二分查找)的递归和非递归算法