總結:binarySearch()方法的返回值爲:一、若是找到關鍵字,則返回值爲關鍵字在數組中的位置索引,且索引從0開始二、若是沒有找到關鍵字,返回值爲負的插入點值,所謂插入點值就是第一個比關鍵字大的元素在數組中的位置索引,並且這個位置索引從1開始。java
注意:調用binarySearch()方法前要先調用sort方法對數組進行排序,不然得出的返回值不定,這時二分搜索算法決定的。算法
下面看一個程序實例:數組
package main_package; import java.util.Arrays; public class test { public static void main(String[] args){ int[]b=new int[]{4,25,10,95,06,21}; System.out.println("原數組爲:"); for(int dim1:b){ System.out.print(""+dim1+" "); } Arrays.sort(b); System.out.println("排序後爲:"); for(int x:b){ System.out.print(x+" "); } System.out.println(); int index=Arrays.binarySearch(b, 2); System.out.println("關鍵字2的返回值爲:"+index); index=Arrays.binarySearch(b, 20); System.out.println("關鍵字20的返回值爲:"+index); index=Arrays.binarySearch(b, 30); System.out.println("關鍵字30的返回值爲:"+index); index=Arrays.binarySearch(b, 100); System.out.println("關鍵字100的返回值爲:"+index); index=Arrays.binarySearch(b, 10); System.out.println("關鍵字10的返回值爲:"+index); } }
程序結果爲: code
能夠看到 關鍵字2並無在數組中,並且2比數組中的任何一個元素都小,因此其插入點的值應爲元素4的位置也就是1(沒有找到關鍵字從1開始)排序
關鍵字20也不在數組中,數組中第一個比20大的數是21,因此20的插入點值爲4(沒用找到關鍵字從索引從1開始)索引
關鍵字100也不在數組中,並且100比數組中全部的元素都大,此時插入點值爲length+1 爲7(沒有找到關鍵字索引從1開始)class
關鍵字10在數組中,因此返回其在數組中的索引爲2(找到關鍵字索引從0開始)test
之因此計算插入點值時索引要從1開始算,是由於-0=0,若是從0開始算,那麼上面例子中關鍵字2和關鍵字4的返回值就同樣了。import