1. 程式人生 > 程式設計 >Java陣列使用binarySearch()方法查詢指定元素的實現

Java陣列使用binarySearch()方法查詢指定元素的實現

查詢陣列是指從陣列中查詢指定位置的元素,或者查詢某元素在指定陣列中的位置。使用 Arrays 類的 binarySearch() 方法可以實現陣列的查詢,該方法可使用二分搜尋法來搜尋指定陣列,以獲得指定物件,該方法返回要搜尋元素的索引值。

binarySearch() 方法有多種過載形式來滿足不同型別陣列的查詢需要,常用的過載形式有兩種。

(1) 第一種形式如下:

binarySearch(Object[] a,Object key);

其中,a 表示要搜尋的陣列,key 表示要搜尋的值。如果 key 包含在陣列中,則返回搜尋值的索引;否則返回 -1 或“-插入點”。插入點指搜尋鍵將要插入陣列的位置,即第一個大於此鍵的元素索引。

在進行陣列查詢之前,必須對陣列進行排序(可以使用 sort() 方法)。如果沒有對陣列進行排序,則結果是不確定的。如果陣列包含多個帶有指定值的元素,則無法確認找到的是哪一個。
例 1
宣告 double 型別的 score 陣列,接著呼叫 Arrays 類的 sort() 方法對 score 陣列排序,排序後分別查詢陣列中值為 100 和 60 的元素,分別將結果儲存到 index1 和 index2 變數中,最後輸出變數的值。程式碼如下:

public static void main(String[] args) {
  double[] score = { 99.5,100,98,97.5,95,85.5,100 };
  Arrays.sort(score);
  int index1 = Arrays.binarySearch(score,100);
  int index2 = Arrays.binarySearch(score,60);
  System.out.println("查詢到 100 的位置是:" + index1);
  System.out.println("查詢到 60 的位置是:" + index2);
}

執行上述程式碼,輸出結果如下:
查詢到 100 的位置是:5
查詢到 60 的位置是:-1

(2) 除了上述形式外,binarySearch() 還有另一種常用的形式,這種形式用於在指定的範圍內查詢某一元素。語法如下:

binarySearch(Object[] a,int fromIndex,int toIndex,Object key);

其中,a 表示要進行查詢的陣列,fromIndex 指定範圍的開始處索引(包含開始處),toIndex 指定範圍的結束處索引(不包含結束處),key 表示要搜尋的元素。

在使用 binarySearch() 方法的上述過載形式時,也需要對陣列進行排序,以便獲取準確的索引值。如果要查詢的元素 key 在指定的範圍內,則返回搜尋鍵的索引;否則返回 -1 或 “-插入點”。插入點指要將鍵插入陣列的位置,即範圍內第一個大於此鍵的元素索引。

例 2

對例 1 中建立的 score 陣列進行查詢元素,指定開始位置為 2,結束位置為 6。程式碼如下:

public static void main(String[] args) {
  double[] score = {99.5,100};
  Arrays.sort(score);
  int index1 = Arrays.binarySearch(score,2,6,60);
  System.out.println("查詢到 100 的位置是:"+index1);
  System.out.println("查詢到 60 的位置是:"+ index2);
}

執行上述程式碼,輸出結果如下:
查詢到 100 的位置是:5
查詢到 60 的位置是:-3

注意:實現對陣列進行查詢的方法很多,但是使用 Arrays 物件的 binarySearch() 方法是最簡單、最方便的一種,因此該方法經常被應用。關於其他的查詢方法這裡不再演示,感興趣的讀者可以動手試一試。

到此這篇關於Java陣列使用binarySearch()方法查詢指定元素的實現的文章就介紹到這了,更多相關Java binarySearch查詢指定元素內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!