Java 程式實現對陣列的二分搜尋


可以使用 java.util.Arrays.binarySearch() 方法在陣列上實現二分搜尋。如果陣列中存在所需元素,此方法會返回該元素的索引,否則會返回 (- (插入點) - 1),其中插入點是元素將被插入到陣列中的位置。

演示此方法的程式如下 −

示例

 線上演示

import java.util.Arrays;
public class Demo {
   public static void main(String[] args) {
      int arr[] = { 3, 9, 1, 6, 4};
      Arrays.sort(arr);
      System.out.print("The sorted array is: ");
      for (int i : arr) {
         System.out.print(i + " ");
      }
      System.out.println();
      int index1 = Arrays.binarySearch(arr, 6);
      System.out.println("The integer 6 is at index " + index1);
      int index2 = Arrays.binarySearch(arr, 7);
      System.out.println("The integer 7 is at index " + index2);
   }
}

輸出

The sorted array is: 1 3 4 6 9
The integer 6 is at index 3
The integer 7 is at index -5

現在,讓我們瞭解一下上述程式。

已定義 int 陣列 arr[],然後使用 Arrays.sort() 對其進行排序。然後使用 for 迴圈列印排序後的陣列。演示此功能的程式碼片段如下 −

int arr[] = { 3, 9, 1, 6, 4};
Arrays.sort(arr);
System.out.print("The sorted array is: ");
for (int i : arr) {
   System.out.print(i + " ");
}
System.out.println();

方法 Arrays.binarySearch() 用於查詢元素 6 和 7 的索引。由於 6 在陣列中,因此會顯示其索引。另外,7 不在陣列中,因此會顯示根據 (-(插入點) - 1) 計算的值。演示此功能的程式碼片段如下 −

int index1 = Arrays.binarySearch(arr, 6);
System.out.println("The integer 6 is at index " + index1);
int index2 = Arrays.binarySearch(arr, 7);
System.out.println("The integer 7 is at index " + index2);

更新於: 25-06-2020

335 次瀏覽

開啟你的 職業之旅

完成課程,獲得認證

開始學習
廣告
© . All rights reserved.