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

Barbara Streisand
Lepaskan: 2024-11-26 01:40:14
asal
973 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!

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