Carian binari adalah algoritma yang cekap untuk mencari array yang disusun dengan berulang kali membahagikan selang carian pada separuh. Berikut adalah pelaksanaan langkah demi langkah mencari binari di Python:
<code class="python">def binary_search(arr, target): """ Perform binary search on a sorted array to find the target value. Args: arr (list): A sorted list of elements to search through. target: The value to search for in the list. Returns: int: The index of the target if found, otherwise -1. """ left, right = 0, len(arr) - 1 while left </code>
Fungsi ini binary_search
mengambil array yang disusun dan nilai sasaran, kemudian mengembalikan indeks sasaran jika ia dijumpai, atau -1 jika tidak.
Untuk memastikan kecekapan pencarian binari di Python, anda perlu mengikuti langkah -langkah utama ini:
left
ke 0 dan right
ke len(arr) - 1
. Batasan -sempadan ini menentukan keseluruhan ruang carian pada mulanya.(left right) // 2
. Pastikan pengiraan ini tidak melimpah dan dikira dengan betul dalam setiap lelaran.Kemas kini sempadan yang betul :
arr[mid] , kemas kini <code>left
hingga mid 1
untuk mencari separuh kanan.
arr[mid] > target
, right
kini ke mid - 1
untuk mencari separuh kiri.arr[mid] == target
, kembalikan indeks mid
sebagai sasaran dijumpai.left . Ini memastikan keseluruhan array dicari jika perlu.
Dengan mematuhi langkah -langkah ini, anda memastikan bahawa carian binari tetap cekap dengan kerumitan masa O (log n).
Untuk mengoptimumkan carian binari pada dataset besar di Python, pertimbangkan teknik berikut:
(left right) // 2
, yang boleh menyebabkan limpahan dalam tatasusunan yang sangat besar, gunakan left (right - left) // 2
. Ini menghalang isu -isu limpahan integer yang berpotensi.Berikut adalah versi yang sedikit dioptimumkan carian binari untuk dataset besar:
<code class="python">def optimized_binary_search(arr, target): left, right = 0, len(arr) - 1 while left </code>
Semasa melaksanakan pencarian binari di Python, ketahui kesilapan -kesilapan yang sama:
(left right) / 2
boleh membawa kepada isu -isu bahagian terapung di Python 2 atau (left right) // 2
boleh menyebabkan limpahan integer dalam dataset yang sangat besar. Sebaliknya, gunakan left (right - left) // 2
.Kemas kini sempadan yang salah :
left
dan right
, seperti left = mid
atau right = mid
bukan left = mid 1
dan right = mid - 1
.left = 0
dan right = len(arr)
bukan right = len(arr) - 1
boleh mengakibatkan kesilapan luar.None
kembali dalam beberapa kes dan -1
pada orang lain.left bukan <code>left boleh menyebabkan algoritma terlepas sasaran jika ia adalah elemen yang terakhir.
Dengan mengelakkan kesilapan biasa ini, anda boleh memastikan pelaksanaan carian binari anda betul dan cekap.
Atas ialah kandungan terperinci Bagaimana anda melaksanakan algoritma carian binari di Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!