Javabinarysearch方法原理是什么,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的寶坻網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
這篇文章主要介紹了Java binarysearch方法原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
首先 數(shù)組排序需要import java.util.Arrays類
binarysearch有兩個(gè)用法,一個(gè)是在整個(gè)數(shù)組里搜索,一個(gè)是在指定范圍搜索,其實(shí)都是差不多的,可以將前者視為后者的特殊情況。
用法1
binarySearch(Object[], Object key)
Object是目標(biāo)數(shù)組,key是目標(biāo)值,要求目標(biāo)數(shù)組必須要經(jīng)過排序的,否則無法找到正確的結(jié)果
查詢無非就是兩種結(jié)果,一種是目標(biāo)值在目標(biāo)數(shù)組里,另一種是不在
所以返回值也分為正負(fù)兩種,目標(biāo)值在目標(biāo)數(shù)組內(nèi)的,返回下標(biāo)(如果有多個(gè)相同的,無法確定找到的是哪個(gè),因?yàn)槭嵌炙阉鳎?/p>
目標(biāo)值不在數(shù)組內(nèi)的,返回 -(第一個(gè)大于目標(biāo)值的元素的下標(biāo)+1),類似的,如果數(shù)組內(nèi)的值都比目標(biāo)值小,則是返回-(數(shù)組長(zhǎng)度+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
也可以這么理解:
對(duì)應(yīng)相應(yīng)的位置輸出即可。
用法2
binarySearch(Object[], int fromIndex, int toIndex, Object key)
加了兩個(gè)int變量,代表區(qū)間的開始和結(jié)束,從fromindex(包含)到toindex(不包含)這個(gè)區(qū)間里面搜索,返回值和前面用法1類似,唯一有所不同的是,當(dāng)如果區(qū)內(nèi)的值都比目標(biāo)值小,則是返回-(toindex+1),如果區(qū)間內(nèi)的值都比目標(biāo)值大,則返回-(fromindex+1),仔細(xì)想想不難理解,用法1就相當(dāng)于fromindex為0且toindex為數(shù)組長(zhǎng)度的用法2。
關(guān)于Javabinarysearch方法原理是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。