返回列表 發帖

[隨堂練習] TQC+510 二分搜尋法

  1. import java.util.Scanner;
  2. public class JPD05 {
  3.     public static Scanner keyboard = new Scanner(System.in);
  4.    
  5.     public static void main(String[] argv) {
  6.         search();
  7.         search();
  8.     }
  9.    
  10.     public static void search() {
  11.         int[] data = {5, 9, 13, 15, 17, 19, 25, 30, 45}; // 已排序資料

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

  13.         int target = keyboard.nextInt();
  14.    
  15.         int high = data.length-1;
  16.         int low = 0;
  17.         int mid = 0;
  18.         int n = 0;
  19.         
  20.         
  21.       
  22.        while(low <=high)
  23.        {
  24.            System.out.println("尋找區間:"+low+"("+data[low]+").."+high+"("+data[high]+")中間:"+mid+"("+data[mid]+")");
  25.                 n++;
  26.                 mid = (high+low)/2;
  27.                 if(target>data[mid])
  28.                 {
  29.                         low = mid+1;
  30.                 }
  31.                 else if (target < data[mid])
  32.                 {
  33.                    high = mid-1;
  34.                 }
  35.                 
  36.                 else{
  37.                         break;
  38.                 }
  39.        }
  40.       
  41.        System.out.println("經過"+n+"次尋找");
  42.        if(target == data[mid])
  43.        {
  44.                System.out.println("您要找的資料在陣列中的第"+mid+"的位置");
  45.        }
  46.        else{
  47.                System.out.println(target+"不在陣列當中");
  48.        }
  49.         
  50.     }
  51. }
複製代碼

本帖最後由 蔡季樺 於 2017-8-20 15:14 編輯
  1. import java.util.Scanner;
  2. public class JPA05 {
  3.     public static Scanner keyboard = new Scanner(System.in);
  4.    
  5.     public static void main(String[] argv) {
  6.         search();
  7.         search();
  8.     }
  9.    
  10.     public static void search() {
  11.         int[] data = {5, 9, 13, 15, 17, 19, 25, 30, 45};

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

  13.         int target = keyboard.nextInt();
  14.    
  15.         int high = data.length-1;
  16.         int low = 0;
  17.         int mid = 0;
  18.         int n = 0;
  19.         
  20.         
  21.       
  22.        while(low <=high)
  23.        {
  24.                                mid = (high+low)/2;     
  25.                                n++;
  26.                                System.out.println("尋找區間:"+low+"("+data[low]+").."+high+"("+data[high]+")中間:"+mid+"("+data[mid]+")");

  27.                 if(target>data[mid])
  28.                 {
  29.                         low = mid+1;
  30.                 }
  31.                 else if (target < data[mid])
  32.                 {
  33.                    high = mid-1;
  34.                 }
  35.                 else{
  36.                         break;
  37.                 }
  38.                               
  39.        }
  40.       
  41.        System.out.println("經過"+n+"次尋找");
  42.        if(target == data[mid])
  43.        {
  44.                System.out.println("您要找的資料在陣列中的第"+mid+"個位置");
  45.        }
  46.        else{
  47.                System.out.println(target+"不在陣列當中");
  48.        }
  49.         
  50.    
  51.     }
  52. }
複製代碼

TOP

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

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

  13.         int target = keyboard.nextInt();
  14.         int high = data.length-1 ;
  15.         int low  = 0;
  16.         int mid = 0;
  17.         int n = 0;
  18.         
  19.         while(low<=high)
  20.         {
  21.                 System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)",low,data[low],high,data[high],mid,data[mid]);

  22.                 n++;
  23.         mid=(high+low)/2;
  24.         
  25.             if(target>data[mid]){
  26.                    
  27.                     low = mid+1;
  28.                    
  29.             }
  30.             else if(target<data[mid]){
  31.                    
  32.                     high = mid-1;
  33.                    
  34.             }
  35.             else{
  36.                    
  37.                     break;
  38.                    
  39.             }
  40.                
  41.                            
  42.         }
  43.         
  44.         System.out.println("經過"+n+"次的搜尋");
  45.         if(target == data[mid]){
  46.                
  47.                 System.out.println("您要找的資料在陣列中的第"+mid+"個位置");
  48.         }
  49.         else{
  50.                
  51.                 System.out.println(target+"不在陣列中");
  52.                
  53.         }
  54.     }
  55. }
複製代碼

TOP

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

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

  13.         int target = keyboard.nextInt();
  14.    
  15.         int high = data.length-1;
  16.         int low = 0;
  17.         int mid = 0;
  18.         int count = 0;
  19.         while(low<=high)
  20.         {
  21.                 count++;
  22.                 mid = (high+low)/2;
  23.                 System.out.printf("尋找區間:%d(%d)..%d(%d),中間:%d(%d)\n",low,data[low],high,data[high],mid,data[mid]);
  24.                 if(low<mid)
  25.                 {
  26.                         low=mid+1;
  27.                 }
  28.                 else if(high>mid)
  29.                 {
  30.                         high=mid-1;
  31.                 }
  32.                 else
  33.                 {
  34.                         break;
  35.                 }
  36.         }
  37.         System.out.printf("經過%d次的尋找\n",count);
  38.         if(target==data[mid])
  39.         {
  40.                 System.out.printf("您要找的資料在陣列中第%d個位置",mid);
  41.         }
  42.         else
  43.         {
  44.                 System.out.printf("%d不在陣列中\n",target);
  45.         }
  46.     }
  47. }
複製代碼

TOP

返回列表