Java 数组折半查找

java 数组折半查找

    public static void main (String[] args) {

        // 数组折半查找
        int[] arr = {1,2,3,4,5,6,7};
        int index = binarySearch(arr,2);
        System.out.println(index);
    }


    // 数组折半查找
    public static int binarySearch(int[] arr,int key) {

        // 数组折半查找原理
        // PS 前提:被查找的数组中的元素必须是有序排列的

        // 定义三个指针变量
        int min = 0;
        int max = arr.length - 1;
        int mid = 0;

        // 循环折半,条件 min <= max
        while (min <= max) {
            // 工时,计算中间索引
            min = (min + max)/2;
            //  让被找元素和中间索引元素进行比较
            if (key > arr[mid]) {
                // 移动最小索引位置
                min = mid + 1;
            }
            else if (key < arr[mid]) {
                // 移动最大索引位置
                max = mid - 1;
            }
            else {
                // 找到了
                return mid;
            }
        }
        // 返回未找到
        return -1;

    }


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

推荐阅读更多精彩内容

  • 原文出处:http://www.cnblogs.com/maybe2030/p/4715035.html引文出处:...
    明教de教主阅读 9,240评论 0 7
  • 目录 [1. 顺序查找][2. 二分查找][3. 插值查找][4. 斐波那契查找][5. 树表查找][6. 分块查...
    jiangmo阅读 17,910评论 4 6
  • 文|孟永辉 同很多互联网公司一样,百度同样迎来了自己的“开年第一讲”。在经历了百度高层的调整之后,李彦宏的“开年第...
    产业深观阅读 754评论 0 8
  • 本来画的就有欠缺,加上这乱乱的背景就更不好看了,翅膀颜色混合的不好,需继续努力
    瘦晓白阅读 342评论 0 1
  • 和我在成都的街头走一走 直到所有的灯都熄灭了也不停留 你会挽着我的衣袖 我会把手揣进裤兜 走到玉林路的尽头 坐在小...
    Katelyn1106阅读 160评论 0 0