設計說明:
1. 畫面顯示[請輸入要找尋的資料:],並於後方要求輸入要找尋的資料。
2. 請輸出二分搜尋法的搜尋過程,並顯示[經過 y 次的尋找],若資料不在陣列裡則顯示[n不再陣列中],若在陣列裡則顯示[您要找的資料在陣列中的第x個位子],執行結果如範例圖。
參考程式碼:
TQC+ Java 試題總整理
- import java.util.*;
- public class JPA510{
- 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}; // 已排序資料
- int a=0,b=data.length-1,i=1;
- System.out.print("請輸入要找尋的資料:");
- int target = keyboard.nextInt();
- System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)%n",a,data[a],b,data[b],(b+a)/2,data[(b+a)/2]);
- do{
- if (target>data[(b+a)/2]){
- a=(b+a)/2+1;
- }
- else if (target<data[(b+a)/2]){
- b=(b+a)/2-1;
- }
- i++;
- System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)%n",a,data[a],b,data[b],(b+a)/2,data[(b+a)/2]);
- }while(target!=data[(b+a)/2]&&b>a);
- System.out.printf("經過 %d 次的尋找%n",i);
- if(target==data[(b+a)/2]) System.out.printf("您要找的資料在陣列中的第%d個位子",(b+a)/2);
- else System.out.printf("%d不在陣列中%n",target);
- }
- }
TQC+ Java 試題總整理
聲明:
這裡的範例程式碼皆由本人親自編輯,歡迎轉載本教學,但請註明本網站,尊重一下作者的心血
沒有留言:
張貼留言
歡迎留言,較舊文章需要留言審核看不到自己的留言是正常的。
若長時間無回應請使用以下聯絡方式:
填寫表單:https://forms.gle/hxxX9n4tATcFnhnk8
寄信到:happyplayblogs@gmail.com