您现在的位置:首页 >> 前端 >> 内容

二分法查找

时间:2017/5/5 17:02:00 点击:

  核心提示:二分法查找script// 最大随机数let num = 1000;// 生成随机数 1~1000let random = Math.ceil(Math.random() * num);// 打印在浏...

二分法查找



<script>
    // 最大随机数
    let num = 1000;
    // 生成随机数 1~1000
    let random = Math.ceil(Math.random() * num);
    // 打印在浏览器标题上
    document.title = random;
    // 0~1000的数组
    let arr = [];
    for ( let i = 1; i <= num; i++ ) {
        arr.push(i);
    }
    /*
    * 通过二分法,在数组中查找某个数
    *   arr --- 数组
    *   num --- 要查找的数
    * */
    function find(arr, num) {
        // 二分法查找
        // 头索引
        let firstIndex = 0;
        // 尾索引
        let lastIndex = arr.length - 1;
        // 中间索引
        let mIndex = Math.floor((firstIndex + lastIndex)/2);
        // 开始查找
        while( arr[mIndex] != num ) {
            // 大了--尾索引 = 中间索引 - 1
            if ( arr[mIndex] > num ) {
                lastIndex =  mIndex - 1;
            }
            // 小了--头索引 = 中间索引 + 1
            else if ( arr[mIndex] < num ) {
                firstIndex =  mIndex + 1;
            }
            mIndex = Math.floor((firstIndex + lastIndex)/2);
        }
        return arr[mIndex];

    }
    console.log(find(arr, random));
</script>

作者:网络 来源:光明大神棍的博客