0Pricing
Competitive Programming Academy · Ders

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 sorted

Tek 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) - 1

Ortayı 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 - 1

Dö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) // 2

Bulunamadı 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 list

Bir 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 = mid

Kullanabiliyorsanı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

  1. Hatasız Klasik İkili Arama
  2. bisect_left ve bisect_right
  3. İlk True: Predicate İkili Araması
  4. Yanıt Üzerinde İkili Arama
← Competitive Programming Academy Sayfasına Dön