Collections----binarySearch

  • 二分法查找的前提是:序列有序;所以在再调用binarySearch方法之前,我们先要对元素进行排序;
  • 常用形式:
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 角标: "+index);
           //非正常查找:
           int index1 = Collections.binarySearch(li,"bb");
           sop("bb 角标: "+index1);
     }
     public static void sop(Object obj) {
           System.out.println(obj);
     }
  • 结果:
    image.png
  • 下面我们再来回顾一下二分法查找:
**//自定义一个二分法查找器,回顾一下二分法的原理;**
     //返回索引,即角标。
     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;
           }
           //当遍历完整个集合序列还未找到指定元素,就返回-1;
           return -1;
     }
  • 查询:
**sop("未排序前  "+li);**
           Collections.sort(li);
           sop("自然排序后  "+li);
           //正常查找:
           int index = halfSearch(li,"kwwwwl");
           sop("kwwwwl 角标: "+index);
           //非正常查找:
           int index1 = halfSearch(li,"bb");
           sop("bb 角标: "+index1);
  • 结果:
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,319评论 0 13
  • 周末小憩,户外徒步,目的地——毛力水库。 出发! 1 怎么去 坐公交或者自驾。 公交可先到镇海骆驼中心站,然后转“...
    良子LIVE阅读 5,836评论 2 2
  • 1、补充优质蛋白质 蛋白质是一切生命的物质基础,与粥和面包等食物相比,鸡蛋中蛋白质的氨基酸构成更好,其必需氨基酸组...
    ded5c8b65735阅读 1,384评论 0 0
  • 昨天下午两点钟隔壁马路口发生了一起非常惨烈的交通事故。一对年近古稀的老人骑电动车车去检查身体,由于行驶的距离太...
    云梦斐阅读 3,928评论 1 1
  • 星寥寥月未在,云蒙蒙雨不来。 虫鸣四面传来,曲曲都是欢快。
    黄叶漫天阅读 1,456评论 0 0