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));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM