RicoLiu/Blog

二分查找

Opened this issue · 0 comments

         /**
         * 二分查找法(有序数组)
         * 
         * 时间复杂度: O(log N).
         *
         * @param {Array} array .
         * @param {Number} value.
         * @returns {Number} Index of the element or -1 if not found.
         */

         function binarySearch(array, value) {
            var middle = Math.floor(array.length / 2);
            var left = 0;
            var right = array.length;
            while (right >= left) {
              var middleValue = array[middle];
              if (middleValue === value) {
                  return middle;
              } else if (middleValue > value) {
                  right = middle - 1;
              } else {
                  left = middle + 1;
              } 
              middle = Math.floor((left + right) / 2);
            }
            return -1;
        }