簡體   English   中英

java Arrays.binarySearch無法找到目標

[英]java Arrays.binarySearch fails to find target

String[] sortedArray = new String[]{"Quality", "Name", "Testing", "Package"};   

// Search for the word "cat" 
int index = Arrays.binarySearch(sortedArray, "Quality");  

我總是得到-3 問題出在"Name" 為什么我的數組中沒有"Name" 任何的想法?

要使用binarySearch ,您需要先自己對數組進行排序:

String[] sortedArray = new String[]{"Quality", "Name", "Testing", "Package"};   

java.util.Arrays.sort(sortedArray);

int index = Arrays.binarySearch(sortedArray, "Quality");  

必須對數組進行排序。 來自binarySearch()的Javadoc:

在進行此調用之前,必須根據元素的自然順序將范圍按升序排序。 如果未排序,則結果未定義。

必須對數組進行排序才能使二進制搜索起作用。 binarySearch的javadoc說:

在進行此調用之前,必須根據元素的自然順序(通過sort(Object [])方法)將數組按升序排序。 如果未排序,則結果未定義。

(重點補充。)

原因很簡單。 二進制搜索算法的前提是輸入數組已排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM