İçeriğe atla
ΣDSA Patterns
Menü
Dil

İkili Arama

Rehber 6 / 6 · Yol 6 / 6

Interactive

Zihinsel model

Bu problem için animasyonlu çözüm. Adımları kaydır veya boşlukla duraklat; değişmezi yüksek sesle yeniden anlat.

Adım 1 / 8
-1
lo
0
3
5
mid
9
12

a[mid] = 5

Half-open search space [lo, hi). Target = 9.

Binary Search

Problem (yeniden ifade)

Sıralı, birbirinden farklı tamsayı dizisi ve bir hedef verilir; hedefin indeksini veya -1 döndür.

Sezgi

Sıralı dizide klasik lower-bound ikili arama.

Yaklaşımlar

Lower-bound ikili arama

Verified
Time O(log n)Space O(1)

Fikir. lo=0, hi=n exclusive; while lo<hi mid=…; if nums[mid]<target lo=mid+1 else hi=mid. nums[lo] kontrol et.

Adım adım. nums=[-1,0,3,5,9,12], target=9 → indeks 4.

Trade-off’lar. Yinelemeli form özyineleme derinliği endişesini ortadan kaldırır.

Solution
export function search(nums: number[], target: number): number {
  let lo = 0, hi = nums.length;
  while (lo < hi) {
    const mid = lo + ((hi - lo) >> 1);
    if (nums[mid]! < target) lo = mid + 1;
    else hi = mid;
  }
  return lo < nums.length && nums[lo] === target ? lo : -1;
}
export function search(nums: number[], target: number): number {
  let lo = 0, hi = nums.length;
  while (lo < hi) {
    const mid = lo + ((hi - lo) >> 1);
    if (nums[mid]! < target) lo = mid + 1;
    else hi = mid;
  }
  return lo < nums.length && nums[lo] === target ? lo : -1;
}

Şablon bağlantısı

Binary Search şablonunun doğrudan uygulaması.

Yansıma