二分法查找

二分法查找

二分法查找原理

使用二分法查找时需要以下两个条件:

没有重复元素

已经排好顺序

假设给定一组排好序且没有重复元素的数字,要从这些数字中快速找到x所在的位置,可以从这组数字的中间位置开始找,如果当前值与x相等,则查找成功,如果小于x则从后半段的中间位置继续找,如果大于x则从前半段的中间位置继续寻找,直到找到x所在的位置

例如一个数组里面的元素有:1,5,8,15,18,23,30

快速找到23对应的下标值

第一次:取得数组的中间位置的值15,15小于23,所以继续从后半段开始找,后半段的元素是18,23,30

第二次:取得数组后半段元素中间位置的值23,23等于23,即找到23对应的下标值5

代码实现

public class MyArrays{

    publicstaticvoidmain(String[] args){

        int[] a = {1,5,8,15,18,23,30};

        int destElement = 23;

        //要求从a数组中查找23这个元素的下标        int index = binarySearch(a,destElement);

        //如果找到则返回元素的下标,如果找不到统一返回 -1        System.out.println((index==-1)? destElement + "元素不存在!":destElement + "在数组中的下标是:" + index);

    }

    //二分法查找的核心算法    publicstaticintbinarySearch(int[] a,intdestElement){

        int begin = 0;

        int end = a.length-1;

        while(begin <= end){

            int middle = (begin + end)/2;   

            if(a[middle]==destElement){

                return middle;

            }elseif(a[middle]>destElement){

                end = middle - 1;

            }elseif(a[middle] < destElement){

                begin = middle + 1;

            }

        }

        return -1;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二分法查找原理 使用二分法查找时需要以下两个条件: 没有重复元素 已经排好顺序 假设给定一组排好序且没有重复元素的...
    eb6a9063c7cd阅读 423评论 0 1
  • 1.二分法查找。 思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,...
    Themores阅读 535评论 0 1
  • Swift的二分法查找实践 在这篇教程中我们会使用计算机科学里一个基础的算法:二分法查找binary search...
    不是谢志伟阅读 1,976评论 1 5
  • 二分法查找原理 使用二分法查找时需要以下两个条件:没有重复元素已经排好顺序假设给定一组排好序且没有重复元素的数字,...
    java萌新小白阅读 170评论 0 1
  • 二分法查找原理 使用二分法查找时需要以下两个条件: 没有重复元素 已经排好顺序 假设给定一组排好序且没有重复元素的...
    江北执_阅读 372评论 0 0