algorithms
İkili Arama (Binary Search) — O(log n) Performans
Sıralı dizide hedef bulmanın en hızlı yolu. Algoritma mantığı, recursion vs iteration, gerçek dünya kullanımı.
⏱️ 10 dakika okuma•intermediate•
İkili Arama (Binary Search)
Sıralı dizide hedef bulmanın en hızlı yoludur: O(log n).
Algoritma
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
Neden O(log n)?
Her adımda arama alanı yarıya iner:
Recursive Versiyon
def binary_search_recursive(arr, target, left=0, right=None):
if right is None:
right = len(arr) - 1
if left > right:
return -1
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search_recursive(arr, target, mid + 1, right)
else:
return binary_search_recursive(arr, target, left, mid - 1)
Python'da Hazır: bisect
import bisect
arr = [1, 3, 5, 7, 9]
idx = bisect.bisect_left(arr, 5) # 2 (insert position)
Gerçek Dünya Kullanımı
Sık Sorulan Sorular
S:Sıralı olmayan dizide binary search kullanılır mı?
C:Hayır. Önce sıralama gerek (O(n log n)), sonra arama (O(log n)). Toplam O(n log n), brute force'tan yavaş.
S:Floating point sayılarda çalışır mı?
C:Evet, ama epsilon karşılaştırması gerekir: `abs(arr[mid] - target) < 1e-9`.
İlgili Mülakat Soruları
Bu rehberi okuduktan sonra şu soruları çözerek pratiğinizi pekiştirin:
Pratik yapmaya hazır mısın?
Tüm Python mülakat sorularını tarayıcıda çalıştır, test caseleri geç, kodunu paylaş.
Sorulara Göz At→