Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Melaksanakan Carian Binari Benar/Salah dengan Cekap dalam Python?

Bagaimanakah Saya Boleh Melaksanakan Carian Binari Benar/Salah dengan Cekap dalam Python?

Barbara Streisand
Lepaskan: 2024-11-26 01:40:14
asal
1095 orang telah melayarinya

How Can I Efficiently Perform a True/False Binary Search in Python?

Carian Perduaan dalam Python: Pendekatan yang Diperbaiki

Dalam Python, carian binari dilakukan dengan mudah melalui modul dua belah dua. Walau bagaimanapun, jika petunjuk tepat kewujudan item dalam senarai dikehendaki, fungsi bisekt_kiri dan dua belah kanan mungkin tidak mencukupi.

Untuk menangani keperluan ini, perpustakaan Python tidak menawarkan fungsi khusus yang disesuaikan semata-mata untuk carian binari dengan keluaran Benar/Salah eksplisit. Akibatnya, penyelesaian tersuai diperlukan.

Coretan berikut mentakrifkan fungsi binary_search, yang melakukan carian binari pada senarai diisih a dan mengembalikan indeks item sasaran x jika ditemui. Jika x tiada, ia mengembalikan -1:

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  # Check if x is there
Salin selepas log masuk

Fungsi ini menggunakan dua belah kiri untuk menentukan titik sisipan bagi x. Jika x terdapat dalam senarai, ia akan terletak pada titik sisipan ini. Untuk mengesahkan ini, nilai pada titik sisipan dibandingkan dengan x. Jika ia sepadan, x ditemui, dan indeksnya dikembalikan. Jika tidak, x tidak hadir dan -1 dikembalikan untuk menunjukkan ini.

Fungsi tersuai ini menyediakan penyelesaian yang ringkas dan cekap untuk melakukan carian binari dengan petunjuk Betul/Salah yang jelas tentang kehadiran item dalam senarai, memenuhi keperluan yang dikenal pasti dalam soalan asal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Carian Binari Benar/Salah dengan Cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan