Java binarysearch方法原理詳解
這篇文章主要介紹了Java binarysearch方法原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
首先 數(shù)組排序需要import java.util.Arrays類
binarysearch有兩個用法,一個是在整個數(shù)組里搜索,一個是在指定范圍搜索,其實都是差不多的,可以將前者視為后者的特殊情況。
用法1
binarySearch(Object[], Object key)
Object是目標數(shù)組,key是目標值,要求目標數(shù)組必須要經(jīng)過排序的,否則無法找到正確的結(jié)果
查詢無非就是兩種結(jié)果,一種是目標值在目標數(shù)組里,另一種是不在
所以返回值也分為正負兩種,目標值在目標數(shù)組內(nèi)的,返回下標(如果有多個相同的,無法確定找到的是哪個,因為是二分搜索)
目標值不在數(shù)組內(nèi)的,返回 -(第一個大于目標值的元素的下標+1),類似的,如果數(shù)組內(nèi)的值都比目標值小,則是返回-(數(shù)組長度+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變量,代表區(qū)間的開始和結(jié)束,從fromindex(包含)到toindex(不包含)這個區(qū)間里面搜索,返回值和前面用法1類似,唯一有所不同的是,當如果區(qū)內(nèi)的值都比目標值小,則是返回-(toindex+1),如果區(qū)間內(nèi)的值都比目標值大,則返回-(fromindex+1),仔細想想不難理解,用法1就相當于fromindex為0且toindex為數(shù)組長度的用法2。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java使用Tinify實現(xiàn)圖片無損壓縮(4M無損壓縮到1M)的方法
在當今的數(shù)字化時代,圖片已成為網(wǎng)站、應用和社交媒體中不可或缺的元素,然而,大尺寸的圖片不僅會增加頁面或者客戶端加載時間,還會占用大量的存儲空間,本文將詳細介紹如何利用Tinify壓縮圖片,并將其上傳至OSS,重點介紹圖片壓縮實現(xiàn)方式,需要的朋友可以參考下2024-08-08Java序列化中子類、父類構(gòu)造函數(shù)問題實例分析
這篇文章主要介紹了Java序列化中子類、父類構(gòu)造函數(shù)問題,結(jié)合實例形式分析了java父類與子類構(gòu)造函數(shù)中序列化接口調(diào)用相關操作技巧與使用注意事項,需要的朋友可以參考下2019-09-09Java中對AtomicInteger和int值在多線程下遞增操作的測試
這篇文章主要介紹了Java中對AtomicInteger和int值在多線程下遞增操作的測試,本文得出AtomicInteger操作 與 int操作的效率大致相差在50-80倍上下的結(jié)論,需要的朋友可以參考下2014-09-09