1. 程式人生 > 其它 >double 陣列_Java陣列使用binarySearch()方法查詢指定元素

double 陣列_Java陣列使用binarySearch()方法查詢指定元素

技術標籤:double 陣列java json刪除指定元素java 陣列刪除元素java 陣列新增一個元素java陣列交換兩個元素的值java陣列刪除元素

查詢陣列是指從陣列中查詢指定位置的元素,或者查詢某元素在指定陣列中的位置。使用 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, 100, 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,98,97.5,100,95,85.5,100};    Arrays.sort(score);    int index1 = Arrays.binarySearch(score,2,6,100);    int index2 = Arrays.binarySearch(score,2,6,60);    System.out.println("查詢到 100 的位置是:"+index1);    System.out.println("查詢到 60 的位置是:"+ index2);}
執行上述程式碼,輸出結果如下:
查詢到 100 的位置是:5
查詢到 60 的位置是:-3
注意:實現對陣列進行查詢的方法很多,但是使用 Arrays 物件的 binarySearch() 方法是最簡單、最方便的一種,因此該方法經常被應用。關於其他的查詢方法這裡不再演示,感興趣的讀者可以動手試一試。

b212a5e9d28cf94432b33813a4999bca.png