查找數(shù)組是指從數(shù)組中查詢指定位置的元素,或者查詢某元素在指定數(shù)組中的位置。使用 Arrays 類的 binarySearch() 方法可以實現(xiàn)數(shù)組的查找,該方法可使用二分搜索法來搜索指定數(shù)組,以獲得指定對象,該方法返回要搜索元素的索引值。
binarySearch() 方法有多種重載形式來滿足不同類型數(shù)組的查找需要,常用的重載形式有兩種。
(1) 第 一種形式如下:
binarySearch(Object[] a,Object key);
其中,a 表示要搜索的數(shù)組,key 表示要搜索的值。如果 key 包含在數(shù)組中,則返回搜索值的索引;否則返回 -1 或“-插入點”。插入點指搜索鍵將要插入數(shù)組的位置,即第 一個大于此鍵的元素索引。
在進(jìn)行數(shù)組查詢之前,必須對數(shù)組進(jìn)行排序(可以使用 sort() 方法)。如果沒有對數(shù)組進(jìn)行排序,則結(jié)果是不確定的。如果數(shù)組包含多個帶有指定值的元素,則無法確認(rèn)找到的是哪一個。
例 1
聲明 double 類型的 score 數(shù)組,接著調(diào)用 Arrays 類的 sort() 方法對 score 數(shù)組排序,排序后分別查找數(shù)組中值為 100 和 60 的元素,分別將結(jié)果保存到 index1 和 index2 變量中,最后輸出變量的值。代碼如下:
public static void main(String[] args) {
double[] score = { 99.5, 100, 98, 97.5, 100, 95, 85.5, 100 };
Arrays.sort(score);
int index1 = Arrays.binarySearch(score, 100);
int index2 = Arrays.binarySearch(score, 60);
填寫下面表單即可預(yù)約申請免費試聽java課程!害怕學(xué)不會?助教陪讀,隨時解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!
System.out.println("查找到 100 的位置是:" + index1);
System.out.println("查找到 60 的位置是:" + index2);
}
執(zhí)行上述代碼,輸出結(jié)果如下:
查找到 100 的位置是:5
查找到 60 的位置是:-1
(2) 除了上述形式外,binarySearch() 還有另一種常用的形式,這種形式用于在指定的范圍內(nèi)查找某一元素。語法如下:
binarySearch(Object[] a,int fromIndex,int toIndex,Object key);
其中,a 表示要進(jìn)行查找的數(shù)組,fromIndex 指定范圍的開始處索引(包含開始處),toIndex 指定范圍的結(jié)束處索引(不包含結(jié)束處),key 表示要搜索的元素。
在使用 binarySearch() 方法的上述重載形式時,也需要對數(shù)組進(jìn)行排序,以便獲取準(zhǔn)確的索引值。如果要查找的元素 key 在指定的范圍內(nèi),則返回搜索鍵的索引;否則返回 -1 或 “-插入點”。插入點指要將鍵插入數(shù)組的位置,即范圍內(nèi)第 一個大于此鍵的元素索引。
例 2
對例 1 中創(chuàng)建的 score 數(shù)組進(jìn)行查找元素,指定開始位置為 2,結(jié)束位置為 6。代碼如下:
public static void main(String[] args) {
double[] score = {99.5,100,98,97.5,100,95,85.5,100};
Arrays.sort(score);
int index1 = Arrays.binarySearch(score,2,6,100);
int index2 = Arrays.binarySearch(score,2,6,60);
System.out.println("查找到 100 的位置是:"+index1);
System.out.println("查找到 60 的位置是:"+ index2);
}
執(zhí)行上述代碼,輸出結(jié)果如下:
查找到 100 的位置是:5
查找到 60 的位置是:-3
下一篇: 沒有了
初級會計職稱中級會計職稱經(jīng)濟(jì)師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會工作者司法考試職稱計算機營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護(hù)士資格證初級護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學(xué)理論中醫(yī)理論