首页 > 编程语言 > 详细

二分查找算法-Node.js实现

时间:2021-02-02 11:13:52      阅读:31      评论:0      收藏:0      [点我收藏+]

 

 

 

 

/**
 * 
 * @param {*} arr 有序数组
 * @param {*} firstNumIndex 第一个值的索引
 * @param {*} lastNumIndex 最后一个值的索引
 * @param {*} target 想要查找的值
 */

function binarySearch(arr, target) {
    var firstNumIndex = 0,
        lastNumIndex = arr.length - 1;

    while (firstNumIndex <= lastNumIndex) {
        var mid = Math.floor((lastNumIndex + firstNumIndex) / 2);
        //var mid = parseInt((lastNumIndex + firstNumIndex) / 2);
        if (target == arr[mid]) {
            console.log(mid); // 0
            return;
        }
        if (target > arr[mid]) {
            firstNumIndex = mid + 1;
        } else if (target < arr[mid]) {
            lastNumIndex = mid - 1;
        }
    }
}

var arr = [-1, 3, 5, 7, 89, 101]
var num = -1;

binarySearch(arr, num)
  

  

 

 步骤分析

1、二分查找法,其实就是通过三个数来查找。

2、选一个开始值,选一个末尾值,再计算出中间值。

3、将中间值与你想查找的值做比较:

如果目标值大于中间值,那么以中间值的下一位作为新的开始值,重新计算中间值;

如果目标值小于中间值,那么以中间值的前一位作为新的末尾值,重新计算中间值;

如果目标值等于中间值,那么得到了我们想要的结果。

 

用二分法要注意的点:

1、数组必须是有序数组(从大到小或者从小到大)

2、要确认有序数组中是否存在相同的值,若有,则根据自己的需求做相应处理。

 

二分查找算法-Node.js实现

原文:https://www.cnblogs.com/yourstars/p/14360665.html

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