Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Algorytmy
Algorytmymedium

Typowe pułapki w binary search — podaj jedną i jak jej uniknąć.

Tagi
#binary-search#bugs#overflow
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Typowe błędy to niespójne granice (pętla nieskończona) i overflow przy liczeniu środka. Użyj `mid = left + (right - left) / 2` i trzymaj się konsekwentnie zakresu (inclusive/exclusive).

function binarySearch(arr: number[], target: number): number {
  let left = 0;
  let right = arr.length - 1;

  while (left <= right) {
    const mid = left + Math.floor((right - left) / 2);
    if (arr[mid] === target) return mid;
    if (arr[mid] < target) left = mid + 1;
    else right = mid - 1;
  }

  return -1;
}

Odpowiedź zaawansowana

Głębiej

Binary search to przede wszystkim inwarianty. Wybierz jedną konwencję granic i trzymaj się jej konsekwentnie.

Bardzo bezpieczny wariant to przedział półotwarty [l, r):

  • l = 0, r = n
  • pętla while l < r
  • mid = l + (r-l)/2
  • jeśli warunek spełniony: r = mid, inaczej l = mid + 1

Przykład: lower bound (pierwszy indeks z a[i] >= x)

function lowerBound(a: number[], x: number) {
  let l = 0, r = a.length
  while (l < r) {
    const mid = l + Math.floor((r - l) / 2)
    if (a[mid] >= x) r = mid
    else l = mid + 1
  }
  return l
}

Typowe pułapki

  • Szukanie w nieposortowanej tablicy / predykat niemontoniczny.
  • Duplikaty: brak decyzji czy chcesz pierwsze/ostatnie wystąpienie.
  • Pętla nieskończona przez `l = mid` / `r = mid` bez postępu.

Powiązane pytania

Algorytmy
Binary search on answer (parametric search): kiedy to ma zastosowanie?
#binary-search#parametric-search#monotonic
Algorytmy
Wyjaśnij wyszukiwanie binarne.
#search#binary-search#algorithm
Bazy danych
NULL w SQL: dlaczego `col = NULL` nie jest true i czego użyć zamiast?
#sql
#null
#three-valued-logic