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