1. 程式人生 > 程式設計 >Java binarysearch方法原理詳解

Java binarysearch方法原理詳解

這篇文章主要介紹了Java binarysearch方法原理詳解,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

首先 陣列排序需要import java.util.Arrays類

binarysearch有兩個用法,一個是在整個數組裡搜尋,一個是在指定範圍搜尋,其實都是差不多的,可以將前者視為後者的特殊情況。

用法1

binarySearch(Object[],Object key)

Object是目標陣列,key是目標值,要求目標陣列必須要經過排序的,否則無法找到正確的結果

查詢無非就是兩種結果,一種是目標值在目標數組裡,另一種是不在

所以返回值也分為正負兩種,目標值在目標陣列內的,返回下標(如果有多個相同的,無法確定找到的是哪個,因為是二分搜尋)

目標值不在陣列內的,返回 -(第一個大於目標值的元素的下標+1),類似的,如果陣列內的值都比目標值小,則是返回-(陣列長度+1)

樣例:

import java.util.Arrays;
public class number {
  public static void main(String[] args) {
  int a[] = new int[] {1,3,4,6,8,9}; 
  int x1 = Arrays.binarySearch(a,5); 
  int x2 = Arrays.binarySearch(a,4); 
  int x3 = Arrays.binarySearch(a,0); 
  int x4 = Arrays.binarySearch(a,10);
  System.out.println(x1+" "+x2+" "+x3+" "+x4);
  }      
}

輸出:

-4 2 -1 -7

也可以這麼理解:

對應相應的位置輸出即可。

用法2

binarySearch(Object[],int fromIndex,int toIndex,Object key)

加了兩個int變數,代表區間的開始和結束,從fromindex(包含)到toindex(不包含)這個區間裡面搜尋,返回值和前面用法1類似,唯一有所不同的是,當如果區內的值都比目標值小,則是返回-(toindex+1),如果區間內的值都比目標值大,則返回-(fromindex+1),仔細想想不難理解,用法1就相當於fromindex為0且toindex為陣列長度的用法2。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。