美文网首页
二分查找法

二分查找法

作者: 以宇宙为海的蓝鲸 | 来源:发表于2019-07-24 20:50 被阅读0次

    使用二分查找的前提是,查找的数组顺序必须是有序的。

    二分查找又称折半查找,通过定义有序数组(左小右大)的首元素的索引为min,尾元素的索引为max,数组中心元素的索引为mid。将mid的值与要查找的值进行比较,如果mid的值小于要查找的目标值,则目标值在mid的右边,反之则在左边。当在右边时max的值不变,min的索引改变为mid+1的索引,mid也改变位置,再次处于min和max的中间位置,大概为(min+max)/2。当在左边时,则min的位置不变,max的索引变成mid-1的索引。依次,重复计算mid的值,直至最后相等或者查找不到目标值。

    图例:

    冒泡排序.png

    代码示例:

    package com.mage.day24;
    ​
    public class Demo01 {
     public static void main(String[] args) {
     int[] arrs = {1,2,3,4,5,6,7,8,9};
     int key = 4;
     int result = binerySearch(arrs,key);
     System.out.println("目标值的索引是:"+result);
     }
     public static int binerySearch(int[] arrs, int key) {
     //定义索引
     int min = 0;
     int max = arrs.length-1;
     int mid;
     while(min<=max) {
     mid = (min+max)/2;
     if(key>arrs[mid]) {
     min = mid+1;
     }else if(key<arrs[mid]) {
     max = mid-1;
     }else {
     return mid;
     }
     }
     return -1;  //返回-1证明没有找到
     }
    }
    //查找4的索引值,返回索引值为3</pre>
    

    相关文章

      网友评论

          本文标题:二分查找法

          本文链接:https://www.haomeiwen.com/subject/dvofrctx.html