java中Arrays類中,binarySearch()方法的返回值問題

最近在複習Java知識,發現果真不常用忘得很是快。。。html

看到binarySearch()方法的使用時,發現書上有點錯誤,因而就本身上機實驗了一下,最後總結一下該方法的返回值。java

 

總結:binarySearch()方法的返回值爲:一、若是找到關鍵字,則返回值爲關鍵字在數組中的位置索引,且索引從0開始二、若是沒有找到關鍵字,返回值爲負的插入點值,所謂插入點值就是第一個比關鍵字大的元素在數組中的位置索引,並且這個位置索引從1開始。算法

注意:調用binarySearch()方法前要先調用sort方法對數組進行排序,不然得出的返回值不定,這時二分搜索算法決定的。數組

下面看一個程序實例spa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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開始)htm

關鍵字20也不在數組中,數組中第一個比20大的數是21,因此20的插入點值爲4(沒用找到關鍵字從索引從1開始)blog

關鍵字100也不在數組中,並且100比數組中全部的元素都大,此時插入點值爲length+1 爲7(沒有找到關鍵字索引從1開始)排序

關鍵字10在數組中,因此返回其在數組中的索引爲2(找到關鍵字索引從0開始)索引

 

之因此計算插入點值時索引要從1開始算,是由於-0=0,若是從0開始算,那麼上面例子中關鍵字2和關鍵字4的返回值就同樣了。

 

FROM https://www.cnblogs.com/qingergege/p/5658292.html

相關文章
相關標籤/搜索