首页 > 其他 > 详细

手写二分查找

时间:2018-04-20 22:43:21      阅读:178      评论:0      收藏:0      [点我收藏+]

import java.util.Arrays;

public class binarySearch {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        int index = binarySearch(arr, 6);
        System.out.println("这个数对应的索引是 :" + index);
    //    System.out.println(Arrays.binarySearch(arr, 6));
    }

    public static int binarySearch(int[] arr, int zhi) {
        int qi = 0; //数组起始值
        int zhong = arr.length - 1; //数组的末值
        int index = -1;  //定义一个下标
        
        while (qi <= zhong) {
            int suoyin = (qi + zhong) / 2; //获取一个中间值得索引;
            
            int guess = arr[suoyin];       //中间索引对应的值
            if (guess >= zhi) {             //中间索引与输入的值比较
                zhong = suoyin - 1;           //比较后的范围重新定义
            }
            if (guess <= zhi) {
                qi = suoyin + 1;
            }
            if (guess == zhi) {
                index = suoyin;         //相等直接跳出
                break;
            }
        }
        return index;                    //返回索引
    }
}

手写二分查找

原文:https://www.cnblogs.com/FuckJava/p/8893832.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!