Bagaimana untuk Melaksanakan Algoritma Carian Binari dalam C Yang Mengembalikan Lokasi Elemen?

DDD
Lepaskan: 2024-10-24 03:49:31
asal
945 orang telah melayarinya

How to Implement a Binary Search Algorithm in C   That Returns the Element's Location?

Mendapatkan Algoritma Carian Binari C "Berguna"

C STL menyediakan algoritma carian_binari, tetapi ia hanya mengembalikan boolean yang menunjukkan sama ada unsur wujud. Untuk kes di mana lokasi tepat elemen diperlukan, terdapat keperluan untuk algoritma yang lebih komprehensif.

Satu pilihan ialah mencipta fungsi carian binari tersuai. Berikut ialah pelaksanaan mudah:

<code class="cpp">template<class Iter, class T>
Iter binary_find(Iter begin, Iter end, T val) {
    // Find the lower bound in at most log(last - first) + 1 comparisons
    Iter i = std::lower_bound(begin, end, val);

    if (i != end && !(val < *i))
        return i; // found
    else
        return end; // not found
}</code>
Salin selepas log masuk

Pendekatan lain ialah menggunakan std::set, yang secara automatik memesan elemen dan menyediakan kaedah find(T) yang mengembalikan iterator kepada item tersebut. Walau bagaimanapun, ini mungkin tidak sesuai jika data boleh mengandungi nilai pendua.

Untuk situasi di mana kelajuan adalah kritikal, adalah penting untuk memanfaatkan faedah carian binari. Algoritma lower_bound dan upper_bound boleh menjadi tidak mencukupi apabila elemen tidak wujud, kerana ia mungkin tidak mengembalikan lelaran akhir. Fungsi binary_find yang disediakan di atas menangani isu ini dan memastikan tingkah laku yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Algoritma Carian Binari dalam C Yang Mengembalikan Lokasi Elemen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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