↯ Robotik KodlamaTüm projeler

İkili arama

Sıralı listede ortadaki değere bakarak her adımda arama aralığını yarıya indiririz.

13+ yaş · 25 dakika · Python 3

İnteraktif atölyede aç →

Neler öğreneceğiz?

Sıralı listede ortadaki değere bakarak her adımda arama aralığını yarıya indiririz.
Bu çalışma gerçek donanım gerektirmeyen bir Python 3 programıdır. Önce sonucu tahmin et, sonra kodu kendi bilgisayarındaki uygun ortamda çalıştır. Uygulama kodu gösterir; cihaz üzerinde Python veya C++ çalıştırıcısı değildir.

İkili arama — proje görseli
Bu projeye ait algoritma, deney veya elektriksel bağlantı görselidir. Donanım görselindeki semboller gerçek breadboard yerleşimi değildir.

Malzeme listesi

  1. Bilgisayar
  2. Python 3 çalışma ortamı
  3. Kâğıt ve kalem

Adım adım yapalım

  1. Verilen başlangıç değerlerini bul ve kâğıda yaz.
  2. Kod satırlarını sırayla izle; her değişkenin yeni değerini not et.
  3. Python kodunu bir .py dosyasına kaydedip Python 3 ile çalıştır.
  4. Çıktıyı aşağıdaki beklenen sonuçla karşılaştır.
  5. Sıra sende görevini yap; tek değişikliği test edip sonucu yaz.

Kod · Python 3

v = [2, 4, 6, 8, 10, 12]
sol, sag, sonuc = 0, len(v) - 1, -1
while sol <= sag:
    orta = (sol + sag) // 2
    if v[orta] == 10:
        sonuc = orta
        break
    if v[orta] < 10:
        sol = orta + 1
    else:
        sag = orta - 1
print(sonuc)

Kod nasıl çalışır?

Sıralı listede ortadaki değere bakarak her adımda arama aralığını yarıya indiririz.
Girintiler aynı işlem grubundaki satırları belirler. print() hesaplanan değeri ekrana yazar.

Beklenen sonuç

4

Sıra sende

Liste sıralı değilse neden güvenilmez sonuç verir?

Güvenli atölye

Bu çalışma bir yazılım modelidir; motor, güç kaynağı veya gerçek güvenlik sistemi kontrol etmez.

Çalışmıyorsa kontrol et

  1. Yazım, parantez ve tırnakları kontrol et.
  2. Beklenen çıktı bu dersteki sabit başlangıç değerleri içindir; değerleri değiştirince sonuç da değişebilir.
  3. Liste indeksleri sıfırdan başlar; boyutu aşan indeks kullanma.

https://docs.python.org/3/tutorial/