[英]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.