1. 程式人生 > >Java中Arrays類中的binarySearch方法詳解

Java中Arrays類中的binarySearch方法詳解

1.它有很多過載的方法:

static int
使用二分搜尋法來搜尋指定的 byte 型陣列,以獲得指定的值。
static int (byte[] a, int fromIndex, int toIndex, byte key)
使用二分搜尋法來搜尋指定的 byte 型陣列的範圍,以獲得指定的值。
static int
使用二分搜尋法來搜尋指定的 char 型陣列,以獲得指定的值。
static int (char[] a, int fromIndex, int toIndex, char key)
使用二分搜尋法來搜尋指定的 char 型陣列的範圍,以獲得指定的值。
static int
(double[] a, double key)
使用二分搜尋法來搜尋指定的 double 型陣列,以獲得指定的值。
static int (double[] a, int fromIndex, int toIndex, double key)
使用二分搜尋法來搜尋指定的 double 型陣列的範圍,以獲得指定的值。
static int (float[] a, float key)
使用二分搜尋法來搜尋指定的 float 型陣列,以獲得指定的值。
static int (float[] a, int fromIndex, int toIndex, float key)
使用二分搜尋法來搜尋指定的 float 型陣列的範圍,以獲得指定的值。
static int
使用二分搜尋法來搜尋指定的 int 型陣列,以獲得指定的值。
static int (int[] a, int fromIndex, int toIndex, int key)
使用二分搜尋法來搜尋指定的 int 型陣列的範圍,以獲得指定的值。
static int (long[] a, int fromIndex, int toIndex, long key)
使用二分搜尋法來搜尋指定的 long 型陣列的範圍,以獲得指定的值。
static int
使用二分搜尋法來搜尋指定的 long 型陣列,以獲得指定的值。
static int
使用二分搜尋法來搜尋指定陣列的範圍,以獲得指定物件。
static int
static int (short[] a, int fromIndex, int toIndex, short key)
使用二分搜尋法來搜尋指定的 short 型陣列的範圍,以獲得指定的值。
static int (short[] a, short key)
使用二分搜尋法來搜尋指定的 short 型陣列,以獲得指定的值。
static
<T> int
(T[] a, int fromIndex, int toIndex, T key,Comparator<? super T> c)
使用二分搜尋法來搜尋指定陣列的範圍,以獲得指定物件。
static
<T> int

使用二分搜尋法來搜尋指定陣列,以獲得指定物件
主要操作物件為陣列,前提:陣列中的元素需要按從小到大的順序排好序(需要使用Arrays.sort排序一下)

常用方法:binarySearch(陣列[],值)

常用的陣列和值的型別可以是beye、short、int、float、double、char

二分法查詢先查詢陣列中間的元素,如果找到就返回陣列中該元素的下標,如果沒找到就返回-插入點-1

比如int[] a = {1,3,5,7,8,9};
int b = 10;

int binarySearch = Arrays.binarySearch(a, b);
System.out.println(binarySearch);

 返回的是-7:(插入點下標為6,返回-6-1 就是-7)

如果沒有找到就判斷需要找的值是否大於陣列中間的元素的值,然後把陣列分為左右兩邊,再根據大小判斷去左邊還是右邊,依次查詢下去。

如果沒有對陣列進行排序,則結果是不確定的。如果陣列包含多個帶有指定值的元素,則無法保證找到的是哪一個。

優點:查詢效率比一般的從陣列中從左到右挨個挨個的查詢的平均查詢時間要快

前提:陣列的元素需要排序

相關推薦

Java之陣列查詢ArraysbinarySearch()方法

Arrays類的binarySearch()方法,可以使用二分搜尋法來搜尋指定的陣列,以獲得指定物件。該方法返回要搜尋元素的索引值。binarySearch()方法提供多種過載形式,用於滿足各種型別陣

JavaArraysbinarySearch方法

1.它有很多過載的方法: static int 使用二分搜尋法來搜尋指定的 byte 型陣列,以獲得指定的值。 static int (byte[] a, int fromIndex, int toIndex, byte key) 使用二分搜尋法來搜尋指定的 byte

javaArraysbinarySearch()方法的返回值問題

.cn pac rom 第一個 mage sea div arch x11 最近在復習Java知識,發現果然不經常使用忘得非常快。。。 看到binarySearch()方法的使用時,發現書上有點錯誤,於是就自己上機實驗了一下,最後總結一下該方法的返回值。 總結:bina

JAVA的主函式main方法

main方法詳解 主函式是靜態的 public static void main(String[] args){      } 主函式是什麼:主函式是一個特殊的函式,作為程式的入口,可以被jvm識別。 主函式的定義:   

手把手教你ExtJS從入門到放棄——篇二十三(示例20:Ext.dom.Element常用增刪改查方法

方法多多,就講部分常用的 查詢系: onReady就不寫了,上核心程式碼 contains:引數可以傳id或者元素 、 child:返回該元素的子元素 down(選擇器):根據選擇器獲取該元素下層內層元素(常用) first:獲取第一個子元素

Java的equals和hashCode方法

Java中的equals方法和hashCode方法是Object中的,所以每個物件都是有這兩個方法的,有時候我們需要實現特定需求,可能要重寫這兩個方法,今天就來介紹一些這兩個方法的作用。 equa

Java執行緒池(2)——執行緒池的幾個重要方法

【內容摘要】 在java中,如果需要進行多執行緒程式設計,可以採用java自帶的執行緒池來實現,執行緒池對於我們新手來說是一個非常好的選擇,因為我們可以不用關心執行緒池中執行緒是如何排程的,避免在多執行緒程式設計過程產生死鎖等問題。在瞭解執行緒池的使用前,本文

Servlet的RequestDispatcher 兩個方法【轉發】

RequestDispatcher 代表請求的派發者。它有2個動作:forward 和 include 。客戶端對於任何一個請求,可以根據業務邏輯需要,選擇不同的處理辦法: 1、請求的是誰,誰就自己處理並響應,例如請求的是一個html,則web瀏覽器顯示的就是這

“全棧2019”Java第五十九章:抽象與抽象方法

難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十九章:抽象類與抽象方法詳解 下一章 “全棧2019”Java第六十章:如何定義介面

pythonopen() read() readline() readlines()方法

提到read() readline() readlines()這幾個方法不擴音一下open(),open()常用的引數有mode、errors、encoding。這裡只說一下encoding,原因是有些困惑。如下 在預設情況下(encoding = None)(作者認為是U

java String 的equals方法

equals 方法的程式碼如下所示: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String)

Python防止sql注入的方法

SQL注入是比較常見的網路攻擊方式之一,它不是利用作業系統的BUG來實現攻擊,而是針對程式設計師程式設計時的疏忽,通過SQL語句,實現無帳號登入,甚至篡改資料庫。下面這篇文章主要給大家介紹了關於Python中防止sql注入的方法,需要的朋友可以參考下。   前言 大家

c++呼叫Com元件的方法

轉載自:http://www.cppblog.com/woaidongmao/archive/2011/01/10/138250.html需求: 1.建立myCom.dll,該COM只有一個元件,兩個介面:    IGetRes--方法Hello(),    IGetResEx--方法HelloEx() 2

STL容器list的sort方法

** List 不能使用STL提供的演算法 sort() , 必須使用自己定義的sort() member function,因為STL演算法sort()只接受RamdonAccessIterator,它的實現程式碼如下,是一個quick sort; *

C++呼叫ActiveX元件的方法

  本文以 "msscript.ocx" 作為參考   第一步:   獲取標頭檔案   #import "msscript.ocx"   得到兩個檔案 "msscript.tlh" 和 "msscript.tli" 整合下的到個頭檔案"msscript.h"如下:   +

陣列排序 java.util.Arrays的sort方法

陣列排序: java.util.Arrays類的sort方法可以對 基本型別陣列 和 Comparable型別陣列進行排序. java2核心技術裡沒提到可以對基本型別排序,今天特試了一下. 支援的, 記錄一下. import java.util.*;public class EmployeeSortTes

JAVA之陣列查詢binarySearch()方法

binarySearch()方法提供了多種過載形式,用於滿足各種型別陣列的查詢需要,binarySearch()有兩種引數型別 注:此法為二分搜尋法,故查詢前需要用sort()方法將陣列排序,如果陣列沒有排序,則結果是不確定的,另外 如果陣列中含有多個指定值

RAML 0.8引用JSON Schema的方法

在RAML 0.8的規範中,以Schema的方式定義資源Resources。 為了能夠引用JSON Schema,提供了兩個關鍵字schemas和schema。schemas用以宣告資源,而schema用以引用資源。 根據是否在raml檔案中定義JSON Schema,引用

Android的Handler的post方法

我們都知道Handler中的post方法,並且也是經常使用它 handler.post(new Runnable(){ @Overridepublic void run() {//do something }}); 用它可以更新一個元件的內容,我們也知道Hanlder

vc呼叫Com元件的方法

需求: 1.建立myCom.dll,該COM只有一個元件,兩個介面:    IGetRes--方法Hello(),    IGetResEx--方法HelloEx() 2.在工程中匯入元件或型別庫  #import "元件所在目錄myCom.dll" no_namespa