Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Semak Kehadiran Item dengan Cekap dalam Senarai Isih Menggunakan Carian Binari dalam Python?

Bagaimanakah Saya Boleh Semak Kehadiran Item dengan Cekap dalam Senarai Isih Menggunakan Carian Binari dalam Python?

DDD
Lepaskan: 2024-11-30 04:56:11
asal
291 orang telah melayarinya

How Can I Efficiently Check for Item Presence in a Sorted List Using Binary Search in Python?

Carian Perduaan (Bahagian) dalam Python dengan Semakan Kehadiran Item Eksplisit

Modul pembahagian dua Python menyediakan fungsi untuk melakukan carian binari, seperti bisekt_kiri dan belah_kanan. Walau bagaimanapun, fungsi ini mengembalikan kedudukan walaupun item yang dicari tidak terdapat dalam senarai. Untuk kes di mana hanya kehadiran atau ketiadaan item dikehendaki, semakan yang lebih jelas diperlukan.

Satu pendekatan ialah menggunakan dua belah kiri dan sahkan jika item pada kedudukan yang dikembalikan sepadan dengan sasaran. Walau bagaimanapun, kaedah ini memperkenalkan kerumitan tambahan, seperti semakan sempadan untuk kes yang sasarannya lebih besar daripada elemen terbesar dalam senarai.

Penyelesaian yang lebih mudah dan langsung ialah melaksanakan fungsi carian binari tersuai yang menyemak secara eksplisit untuk kehadiran item sebelum mengembalikan hasilnya. Berikut ialah contoh:

from bisect import bisect_left

def binary_search(a, x, lo=0, hi=None):
    if hi is None: hi = len(a)
    pos = bisect_left(a, x, lo, hi)                  # find insertion position
    return pos if pos != hi and a[pos] == x else -1  # don't walk off the end
Salin selepas log masuk

Fungsi ini mengambil senarai diisih a, nilai sasaran x dan sempadan bawah dan atas pilihan untuk carian. Ia menggunakan bisect_left untuk mencari titik sisipan bagi x, kemudian menyemak sama ada item pada kedudukan itu sepadan dengan sasaran. Jika padanan ditemui, fungsi mengembalikan kedudukan; jika tidak, ia mengembalikan -1 untuk menunjukkan ketiadaan item.

Dengan memasukkan semakan eksplisit ini, anda boleh dengan cekap menentukan kehadiran atau ketiadaan item dalam senarai diisih tanpa memperkenalkan overhed atau pengehadan yang tidak perlu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak Kehadiran Item dengan Cekap dalam Senarai Isih Menggunakan Carian Binari dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan