Collections----binarySearch

  • 二分法查找的前提是:序列有序;所以在再調(diào)用binarySearch方法之前,我們先要對元素進(jìn)行排序;
  • 常用形式:
public static void main(String[] args) {
           List<String> li = new ArrayList<String>();
           li.add("abcd");
           li.add("llbc");
           li.add("dddddd");
           li.add("dddddd");
           li.add("kl"
           sop("未排序前  "+li);
           Collections.sort(li);
           sop("自然排序后  "+li);
           //正常查找:
           int index = Collections.binarySearch(li,"llbc");
           sop("llbc 角標(biāo): "+index);
           //非正常查找:
           int index1 = Collections.binarySearch(li,"bb");
           sop("bb 角標(biāo): "+index1);
     }
     public static void sop(Object obj) {
           System.out.println(obj);
     }
  • 結(jié)果:
    image.png
  • 下面我們再來回顧一下二分法查找:
**//自定義一個二分法查找器,回顧一下二分法的原理;**
     //返回索引,即角標(biāo)。
     public static int halfSearch(List<String> li, String key) {
           int min, mid, max;
           min = 0;
           max = li.size();
           while(min<+max) {
                mid = (min+max) >> 1;//  /2
                String str = li.get(mid);
                int num =  str.compareTo(key);
                if(num>0)
                     max = mid-1;
                else if(num<0)
                     min = mid+1;
                else
                     return mid;
           }
           //當(dāng)遍歷完整個集合序列還未找到指定元素,就返回-1;
           return -1;
     }
  • 查詢:
**sop("未排序前  "+li);**
           Collections.sort(li);
           sop("自然排序后  "+li);
           //正常查找:
           int index = halfSearch(li,"kwwwwl");
           sop("kwwwwl 角標(biāo): "+index);
           //非正常查找:
           int index1 = halfSearch(li,"bb");
           sop("bb 角標(biāo): "+index1);
  • 結(jié)果:
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系,并對這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而且確保經(jīng)過這...
    Winterfell_Z閱讀 6,605評論 0 13
  • 周末小憩,戶外徒步,目的地——毛力水庫。 出發(fā)! 1 怎么去 坐公交或者自駕。 公交可先到鎮(zhèn)海駱駝中心站,然后轉(zhuǎn)“...
    良子LIVE閱讀 2,034評論 2 2
  • 1、補(bǔ)充優(yōu)質(zhì)蛋白質(zhì) 蛋白質(zhì)是一切生命的物質(zhì)基礎(chǔ),與粥和面包等食物相比,雞蛋中蛋白質(zhì)的氨基酸構(gòu)成更好,其必需氨基酸組...
    ded5c8b65735閱讀 241評論 0 0
  • 昨天下午兩點(diǎn)鐘隔壁馬路口發(fā)生了一起非常慘烈的交通事故。一對年近古稀的老人騎電動車車去檢查身體,由于行駛的距離太...
    云夢斐閱讀 749評論 1 1
  • 星寥寥月未在,云蒙蒙雨不來。 蟲鳴四面?zhèn)鱽?,曲曲都是歡快。
    黃葉漫天閱讀 239評論 0 0

友情鏈接更多精彩內(nèi)容