js实现二分搜索法

二分搜索法:

  也称折半搜索,是一种在有序数组中查找特定元素的搜索算法。

实现步骤:

  1. 首先从数组中间开始查找对比,若相等则找到,直接返回中间元素的索引。

  2. 若查找值小于中间值,则在小于中间值的那一部分执行步骤1的操作。

  3. 若查找值大于中间值,则在大于中间值的那一部分执行步骤1的操作。

  4. 否则,返回结果为查不到,返回-1。

 

方法一:

    function binary_search1(arr, key) {
        var low = 0;
        var high = arr.length - 1;

        while (low <= high) {
            var mid = parseInt((low + high) / 2);

            if (key === arr[mid]) {
                return mid;
            }
            else if (key < arr[mid]) {
                high = mid + 1;
            }
            else if (key > arr[mid]) {
                low = mid - 1;
            }
            else {
                return -1;
            }
        }
    }

  var arr = [1,2,3,4,5,6,7,8];
  console.log(binary_search1(arr, 3));

方法二:

    function binary_search2 (arr, low, high, key) {
        if (low > high) {
            return -1;
        }

        var mid = parseInt((low + high) / 2);

        if (key === arr[mid]) {
            return mid;
        }
        else if (key < arr[mid]) {
            high = mid - 1;
            return binary_search2(arr, low, high, key);
        }
        else if (key > arr[mid]) {
            low = mid + 1;
            return binary_search2(arr, low, high, key);

        }
    }

  

   var arr = [1,2,3,4,5,6,7,8];
   console.log(binary_search2(arr, 0, 7, 3));

 

posted @ 2017-02-15 11:32  小四张  阅读(2424)  评论(3编辑  收藏  举报