Hatasız Klasik İkili Arama
low, high ve mid döngüsünü doğru kurun.
Hatasız Klasik İkili Arama, CoddyKit'te ücretsiz bir Competitive Programming Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Competitive Programming Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
Arama Alanını İkiye Bölün
İkili arama, her adımda aralığı ikiye bölerek sıralı bir listedeki değeri bulur. Böylece yavaş O(n) taraması, hızlı O(log n) aramasına dönüşür.
a = [1, 3, 5, 7, 9] # must be sortedTek Kural: Veriler Sıralı Olmalı
İkili arama yalnızca sıralı verilerde çalışır. Liste sıralı değilse önce sıralayın; aksi hâlde sonuç anlamsız ve yanlış olur.
a.sort() # ascending order requiredİki Sınır
İki işaretçiyle başlayın: low, 0 indeksinde; high, son indekste olsun. Hedef mevcutsa her zaman bu ikisinin arasında bulunur.
low, high = 0, len(a) - 1Ortayı Güvenle Bulun
mid değerini low + (high - low) // 2 olarak hesaplayın. Python'da taşma sorun değildir, ancak bu biçim her yerde kullanılması güvenli bir alışkanlıktır.
mid = low + (high - low) // 2Üç Sonuç
a[mid] değerini hedefle karşılaştırın. Ya onu bulmuşsunuzdur, ya çok küçüktür ya da çok büyüktür. Her durum aralığı farklı biçimde küçültür.
if a[mid] == target:
return midÇok Küçükse Sağa Gidin
a[mid] hedeften küçükse yanıt sağ tarafta olmalıdır. low değerini mid + 1 yapın ve sol yarıyı eleyin.
elif a[mid] < target:
low = mid + 1Çok Büyükse Sola Gidin
a[mid] hedeften büyükse sol yarıda arayın. high değerini mid - 1 yaparak mid değerini yeniden kontrol etmemiş olursunuz.
else:
high = mid - 1Döngü Koşulu
low, high değerinden küçük veya ona eşit olduğu sürece devam edin. Bu ikisi kesiştiğinde aralık boştur ve hedef mevcut değildir.
while low <= high:
mid = low + (high - low) // 2Bulunamadı Sonucunu Bildirin
Döngü eşleşme olmadan sona ererse değer mevcut değildir. Çağıranların başarıyı başarısızlıktan ayırt edebilmesi için geleneksel olarak -1 döndürün.
return -1 # target not in listBir Eksik-Bir Fazla Tuzağı
Klasik hata, bir işaretçiyi hareket ettirirken +1 veya -1 eklemeyi unutmaktır. Bunu atlarsanız mid sürekli yeniden test edilir ve sonsuz döngü oluşur.
low = mid + 1 # not low = midKullanabiliyorsanız Kitaplığı Kullanın
Basit bir üyelik testi için Python'ın bisect modülü zaten hatasız bir arama sunar. Özel bir mantığa ihtiyaç duymadıkça döngüyü elle yazmayın.
import bisect
i = bisect.bisect_left(a, target)Hızlı Kontrol
Döngüyü doğru şekilde sınırlayan şeyin ne olduğunu düşünün.
Özet: Hatasız Arama
Artık low ve high değerlerini ayarlayabilir, mid değerini güvenle hesaplayabilir, doğru tarafı küçültebilir ve bir eksik-bir fazla tuzağından kaçınabilirsiniz. Logaritmik arama artık sizin. 🎯
Sıkça Sorulan Sorular
“Hatasız Klasik İkili Arama” dersi ücretsiz mi?
Evet — “Hatasız Klasik İkili Arama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Competitive Programming Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Competitive Programming Academy kursu toplamda 4 dersten oluşur.
“Hatasız Klasik İkili Arama” dersinde ne öğreneceğim?
low, high ve mid döngüsünü doğru kurun. Competitive Programming Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Competitive Programming Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Competitive Programming Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Hatasız Klasik İkili Arama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Competitive Programming Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Competitive Programming Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Hatasız Klasik İkili Arama
- bisect_left ve bisect_right
- İlk True: Predicate İkili Araması
- Yanıt Üzerinde İkili Arama