# All files / algorithms/lib/binarySearch binarySearch.ts

100% Statements 17/17
100% Branches 6/6
100% Functions 1/1
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    291x

    2x
    2x

    2x

    3x
    3x

    3x
    1x
    1x

    3x
    1x

    1x
    1x
    1x
    3x

    1x
    1x
     export function binarySearch(sortedNumbers: number[], n: number) {
      // Определяем точки начала и конца поиска
      let start = 0;
      let end = sortedNumbers.length;

      while (start < end) {
        // Находим элемент в середине массива
        const middle = Math.floor((start + end) / 2);
        const value = sortedNumbers[middle];

        // Сравниваем аргумент со значением в середине массива
        if (n === value) {
          return middle;
        }

        // Если аргумент меньше, чем серединное значение, разделяем массив пополам
        // Теперь конец массива — это его бывшая середина
        if (n < value) {
          end = middle;
          // Иначе началом массива становится элемент, идущий сразу за «серединой»
        } else {
          start = middle + 1;
        }
      }

      // если искомое число не найдено, возвращаем -1
      return -1;
    }