Binary Search Klasik Tanpa Bug
Menguasai loop low, high, dan mid
Binary Search Klasik Tanpa Bug adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Bagi Dua Ruang Pencarian
Pencarian biner menemukan nilai dalam daftar terurut dengan membagi dua rentang pada setiap langkah. Dengan begitu, pemindaian lambat O(n) berubah menjadi pencarian cepat O(log n).
a = [1, 3, 5, 7, 9] # must be sortedData Terurut adalah Satu-satunya Syarat
Pencarian biner hanya bekerja pada data yang terurut. Jika daftar tidak berurutan, urutkan terlebih dahulu; jika tidak, hasilnya tidak bermakna dan salah.
a.sort() # ascending order requiredDua Batas
Mulailah dengan dua penunjuk: low pada indeks 0 dan high pada indeks terakhir. Jika ada, target selalu berada di antara keduanya.
low, high = 0, len(a) - 1Temukan Titik Tengah dengan Aman
Hitung mid sebagai low + (high - low) // 2. Dalam Python, overflow bukan masalah, tetapi bentuk ini merupakan kebiasaan aman di mana pun.
mid = low + (high - low) // 2Tiga Kemungkinan
Bandingkan a[mid] dengan target. Anda mungkin menemukannya, nilainya terlalu kecil, atau terlalu besar. Setiap kasus mempersempit rentang dengan cara yang berbeda.
if a[mid] == target:
return midTerlalu Kecil, Bergerak ke Kanan
Jika a[mid] lebih kecil daripada target, jawaban pasti berada di sebelah kanan. Pindahkan low ke mid + 1 dan buang separuh kiri.
elif a[mid] < target:
low = mid + 1Terlalu Besar, Bergerak ke Kiri
Jika a[mid] lebih besar daripada target, cari di separuh kiri. Pindahkan high ke mid - 1 agar mid tidak pernah diperiksa lagi.
else:
high = mid - 1Kondisi Perulangan
Lanjutkan selama low kurang dari atau sama dengan high. Saat keduanya saling melewati, rentangnya kosong dan target tidak ada.
while low <= high:
mid = low + (high - low) // 2Laporkan Tidak Ditemukan
Jika perulangan berakhir tanpa kecocokan, nilainya tidak ada. Kembalikan -1 sebagai konvensi agar pemanggil dapat membedakan keberhasilan dan kegagalan.
return -1 # target not in listJebakan Selisih Satu
Kesalahan klasiknya adalah melupakan +1 atau -1 saat memindahkan penunjuk. Jika dilewati, mid akan diuji ulang selamanya dan menyebabkan perulangan tak berujung.
low = mid + 1 # not low = midGunakan Pustaka Jika Bisa
Untuk pengujian keanggotaan biasa, modul Python bisect sudah menyediakan pencarian bebas kesalahan. Tulis perulangan sendiri hanya jika Anda memerlukan logika khusus.
import bisect
i = bisect.bisect_left(a, target)Pemeriksaan Singkat
Pikirkan hal yang menjaga perulangan tetap benar.
Ringkasan: Mencari Tanpa Kesalahan
Sekarang Anda dapat menetapkan low dan high, menghitung mid dengan aman, mempersempit sisi yang tepat, dan menghindari jebakan selisih satu. Pencarian logaritmik kini dapat Anda gunakan. 🎯
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Binary Search Klasik Tanpa Bug” gratis?
Ya — teks lengkap “Binary Search Klasik Tanpa Bug” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Binary Search Klasik Tanpa Bug”?
Menguasai loop low, high, dan mid Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?
Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Binary Search Klasik Tanpa Bug” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?
Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Binary Search Klasik Tanpa Bug
- bisect_left dan bisect_right
- True Pertama: Binary Search Predicate
- Binary Search pada Jawaban