網站聲明

本網站包含了各式各樣的資源,如果有侵占到您的著作權,請與本人通知,本人會立即改進。本站所有發表僅屬研究討論性質,如果有任何後果請自行負責。

2015-05-15

TQC+ Java6 基本認識 510 二分搜尋法

510.
設計說明:

1. 畫面顯示[請輸入要找尋的資料:],並於後方要求輸入要找尋的資料。
2. 請輸出二分搜尋法的搜尋過程,並顯示[經過 y 次的尋找],若資料不在陣列裡則顯示[n不再陣列中],若在陣列裡則顯示[您要找的資料在陣列中的第x個位子]執行結果如範例圖

參考程式碼:
  1. import java.util.*;
  2. public class JPA510{
  3.  public static Scanner keyboard = new Scanner(System.in);
  4.  public static void main(String[] argv) {
  5.   search();
  6.   search();
  7.  }
  8.  public static void search() {
  9.   int[] data = {5913151719253045}; // 已排序資料
  10.   int a=0,b=data.length-1,i=1;
  11.   System.out.print("請輸入要找尋的資料:");
  12.   int target = keyboard.nextInt();
  13.   System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)%n",a,data[a],b,data[b],(b+a)/2,data[(b+a)/2]);
  14.   do{
  15.    if (target>data[(b+a)/2]){
  16.     a=(b+a)/2+1;
  17.    }
  18.    else if (target<data[(b+a)/2]){
  19.     b=(b+a)/2-1;
  20.    }
  21.    i++;
  22.    System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)%n",a,data[a],b,data[b],(b+a)/2,data[(b+a)/2]);
  23.   }while(target!=data[(b+a)/2]&&b>a);
  24.   System.out.printf("經過 %d 次的尋找%n",i);
  25.   if(target==data[(b+a)/2]) System.out.printf("您要找的資料在陣列中的第%d個位子",(b+a)/2);              
  26.   else  System.out.printf("%d不在陣列中%n",target);           
  27.  }
  28. }

TQC+ Java 試題總整理

聲明:

這裡的範例程式碼皆由本人親自編輯,歡迎轉載本教學,但請註明本網站,尊重一下作者的心血

沒有留言:

張貼留言

歡迎留言,較舊文章需要留言審核看不到自己的留言是正常的。
若長時間無回應請使用以下聯絡方式:
填寫表單:https://forms.gle/hxxX9n4tATcFnhnk8
寄信到:happyplayblogs@gmail.com