在C 中搜尋高效的二分搜尋演算法
程式設計師經常尋求實現高效的二分搜尋演算法,以提供對數時間複雜度的優勢。一個常見的要求是演算法傳回一個指向搜尋結果的迭代器,而不是一個指示其存在的簡單布林值。
C 標準庫在
幸運的是,有其他可用的實作可以提供所需的功能。一種流行的選擇是使用利用 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 方法,該方法傳回所需項目的迭代器。但是,重要的是要考慮要求是否與集合的使用相容,特別是在需要儲存相同元素的多個實例的情況下。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3