1.12 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 變量中,最后輸出變量的值。代碼如下:
執行上述代碼,輸出結果如下:
查找到 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。代碼如下:
執行上述代碼,輸出結果如下:
查找到 100 的位置是:5 查找到 60 的位置是:-3注意:實現對數組進行查找的方法很多,但是使用 Arrays 對象的 binarySearch() 方法是最簡單、最方便的一種,因此該方法經常被應用。
總結
以上是生活随笔為你收集整理的1.12 Java数组使用binarySearch()方法查找指定元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.11 Java数组填充(fill()
- 下一篇: 1.13 复制(拷贝)数组的4种方法:a