」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 您能否在 C++ 中實現高效的二分搜尋演算法,將迭代器返回搜尋結果?

您能否在 C++ 中實現高效的二分搜尋演算法,將迭代器返回搜尋結果?

發佈於2024-11-08
瀏覽:162

Can You Implement an Efficient Binary Search Algorithm in C   that Returns an Iterator to the Search Result?

在C 中搜尋高效的二分搜尋演算法

程式設計師經常尋求實現高效的二分搜尋演算法,以提供對數時間複雜度的優勢。一個常見的要求是演算法傳回一個指向搜尋結果的迭代器,而不是一個指示其存在的簡單布林值。

C 標準庫在 標頭中提供了 std::binary_search,但它只傳回一個布林值。正如提問者所指出的,對於需要二分搜尋速度並且已知資料已排序的情況,這可能會令人沮喪。

幸運的是,有其他可用的實作可以提供所需的功能。一種流行的選擇是使用利用 std::lower_bound、std::upper_bound 或 std::equal_range 函數的自訂演算法。這是這類實作的簡化版本:

template
Iter binary_find(Iter begin, Iter end, T val) {
    // Determine the lower bound using binary search
    Iter i = std::lower_bound(begin, end, val);

    // If the element is found, return the iterator to it
    if (i != end && !(val 

或者,可以使用 std::set,它保證元素的順序並提供 find 方法,該方法傳回所需項目的迭代器。但是,重要的是要考慮要求是否與集合的使用相容,特別是在需要儲存相同元素的多個實例的情況下。

版本聲明 本文轉載於:1729693891如有侵犯,請洽[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3