TQC+ 物件導向程式語言 Java 6 510 二分搜尋法
第5類:陣列設計能力

TQC+ 物件導向程式語言 Java 6 510 二分搜尋法

來自的免費背景照片 zh.pngtree.com

題目說明:

請開啟檔案 JPD05.java,依下列題意完成作答。將 JPD05.java 內的 class JPD05 修改為 class JPA05,檔案另存成 JPA05.java,並編譯為 JPA05.class。

設計說明:

(1) 程式內有已排序資料 {5, 9, 13, 15, 17, 19, 25, 30, 45},請使用二分搜尋法尋找輸入的資料。

(2) 程式連續執行兩次,於程式執行時,如執行結果參考畫面 (1) 所示,顯示【請輸入要找尋的資料:】,要求輸入欲尋找的資料 n。

(3) 若沒有搜尋到相符的數值,顯示【n 不在陣列中】,將欲尋找的資料代入 n,如執行結果參考畫面 (2) 所示。

(4) 尋找時,列出尋找區間及此區間的中間值,搜尋幾次就列出幾項,最後產出【經過 y 次的尋找】,y 代入搜尋次數:若有搜尋到相符的數值,請顯示【您要找的資料在陣列中的第 x 個位置】,x 代入輸入值,此數值位於在陣列中的第幾個位置,如執行結果參考畫面 (3) 所示。

執行結果參考畫面:

(1) 於程式執行時,顯示【請輸入要找尋的資料:】。

(2) 若沒有搜尋到相符的數值,顯示【n 不在陣列中】,將欲尋找的資料代入 n。

(3) 若有搜尋到相符的數值,請顯示【您要找的資料在陣列中的第 x 個位置】。



JPD05.java 檔案下載

程式碼:

import java.util.Scanner;
public class JPA05 {
    public static Scanner keyboard = new Scanner(System.in);
    
    public static void main(String[] argv) {
        search();
        search();
    }
    
    public static void search() {
        int[] data = {5, 9, 13, 15, 17, 19, 25, 30, 45}; // 已排序資料

        System.out.print("請輸入要找尋的資料:");

        int target = keyboard.nextInt();
    
        int low = 0, high = data.length - 1, mid = 0, time = 0;
        boolean b = false;
        
        while(low <= high) {
        	mid = (low + high) / 2;
        	time++;
        	System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)\n", 
        			low,data[low],high,data[high],mid,data[mid]);
        	
        	if(target < data[mid]) 
        		high = mid - 1;
        	else if(target > data[mid]) 
        		low = mid + 1;
        	else {
        		b = true;
        		break;
        	}
        }
        System.out.printf("經過 %d 次的尋找\n", time);
        
        if(b)
        	System.out.printf("您要找的資料在陣列中的第%d個位置\n", mid);
        else
        	System.out.printf("%d不在陣列中\n", target);
    }
}

JPA05.java 檔案下載



TQC+ 物件導向程式語言 Java 6 第五類:陣列設計能力




如果覺得文章內容還不錯的話,麻煩請幫我點個讚!感謝

可以多點幾次喔~~

第一次點讚需使用 Google 或 Facebook 帳號註冊

發表迴響