美文网首页
2018-05-05 二分查找

2018-05-05 二分查找

作者: Virginia_sun | 来源:发表于2018-05-05 12:43 被阅读0次

    二分查找

    二分查找的思想其实是为了减少搜索范围,每次缩减一半,这样就可以快速找到对象。

    1.二分查找的对象

    二分查找的对象是有序的数组。如果一个数组没有按顺序排好则无法应用二分查找。

    2.二分查找用例

    package com.mingguo.zjut.main;
    
    public class BinarySearch {
    
        public static int rank(int key,int a[]){
            int L = 0;
            int R = a.length - 1;
            while(L<=R){
                int mid = L +(R-L)/2;
                if(a[mid]==key){
                    return mid;
                }else if(a[mid] > key){
                    R = mid - 1;
                }else if(a[mid] < key){
                    L = mid + 1;
                }
            }
            return -1;
        }
        public static void main(String[] args) {
            int newArray [] = {
                1,2,3,4,5,6,7,8
            };
            System.out.println(rank(1,newArray));
        }
    
    }
    

    3.二分查找过程

    上述二分查找代码是用rank()函数实现的,该函数接受一个整数和一个已经有序的int数组作为参数。如果该键存在于数组中则返回他的索引,否则返回-1。该算法使用了两个变量L和R,并保证如果该键存在于数组中,则它一定在a[L..R]中,然后方法进入下一次的循环,不断的将数组的中间键(索引为mid)和被查找的键比较。如果查找的键等于a[mid],返回mid;否则算法就会将范围缩小为原来的一半,如果被查找的键小于a[mid]就继续在左半边找,如果被查找的键大于a[mid]就继续在右半边找。算法找到该键或者查找范围为空(L>R)时该过程结束。二分查找之所以快是因为它只需检查很少几个条目(相对于数组的大小)就能找到目标元素(或者确认目标元素不存在)。

    相关文章

      网友评论

          本文标题:2018-05-05 二分查找

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