1. 程式人生 > >隨機數生成一個數組,對該陣列檢索

隨機數生成一個數組,對該陣列檢索

生成一個含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
	      }
}