Java如何在命令列讀取引數 [ 遞迴法實現二分查詢 ]
阿新 • • 發佈:2019-01-06
目的:用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命令