Java如何在命令行读取参数 [ 递归法实现二分查找 ]

目的:用Java编写了一个递归实现二分查找(BinarySearch)的程序,希望能够在命令行运行:读取键盘输入的一个整数作为输入参数key(即 所查找的数),输出每次递归调用二分查找时的中间数,以及查找结果(key值在数组中的位置)。

注:被查找数组我设为 int[ ] a = { 0, 1, 2, ... ..., 98, 99 } 

代码

// recursive BinarySearch
import java.util.*;                //要导入响应的库

public class RecursiveBS {
	public static int rank(int key, int[] a) {
		return rank(key, a, 0, a.length-1);
	}
	public static int rank(int key, int[] a, int lo, int hi) {  /*二分查找的递归实现*/
		if(lo>hi) return -1;
		int mid = lo + (hi-lo)/2;
		System.out.println("mid: " + mid); 
		if(key == a[mid]) return mid;
		else if(key<a[mid]) return rank(key,a,lo,mid-1);
		else return rank(key,a,mid+1,hi);
	}
	public static void main(String[] args) {
		Scanner inPut = new Scanner(System.in);    //用到 Scanner类
		int key = inPut.nextInt();                 //
		inPut.close();                             //
		int[] a = new int[100];
		for(int i = 0;i<a.length;i++) {
			a[i] = i;
		}
		int pos = rank(key,a);
		System.out.println("the pos is: " + pos);
	}
}

运行

1)在命令行编译并执行RecursiveBS类文件:......输入命令java RecursiveBS,回车;

2)输入一个整数作为要查找的key值 如:87,回车;即得到输出结果。

3) 测试一下其他的数:

输入99:

输入101:

待改进:如何输入多个数 而不用每次都重新执行java RecursiveBS命令

猜你喜欢

转载自blog.csdn.net/cunane/article/details/85230064
今日推荐