隨機數生成一個數組,對該陣列檢索
阿新 • • 發佈:2018-12-09
生成一個含100個隨機數的陣列,對其進行檢索,這裡以二分檢索為例。
import java.util.Random; import java.util.Scanner; //引入隨機數的二分檢索 public class RandomErfen { public static void main(String[] args) { //定義一個含100個隨機數的陣列,這裡我設定了隨機數的取值範圍<200 int [] numbers = new int [100]; Random random = new Random(); for(int i = 0; i < 100; i++){ numbers[i]= random.nextInt(200); } //對陣列進行排序 Arrays.sort(numbers); //輸出陣列內容 System.out.println("陣列順序為:"); for(int n : numbers){ System.out.print(n+" "); } System.out.println("\n請輸入一個數字:"); //獲取輸入的數 Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); long startTime = System.currentTimeMillis(); //程式開始時間 binarySearch(numbers,num,100); long endTime = System.currentTimeMillis(); //呼叫函式,計算程式執行時間 System.out.println("程式執行時間:" + (endTime - startTime)+"ms"); } public static int binarySearch(int [] a, int x, int n){ // 在 a[0] <= a[1] <= ... <= a[n-1] 中搜索 x // 找到x時返回其在陣列中的位置,並返回查詢次數,否則返回-1 int count=0; int left = 0; int right = n - 1; while (left <= right) { int middle = (left + right)/2; count++; if (x == a[middle]){ System.out.println(x+"在陣列中的位置下標是"+middle); System.out.println("查詢次數是"+count+"次"); break; } if (x > a[middle]) left = middle + 1; else right = middle - 1; } return -1; // 未找到x } }