首页 > 后端开发 > C++ > 正文

如何在 C 中使用二分查找查找元素索引?

Mary-Kate Olsen
发布: 2024-10-24 04:32:31
原创
845 人浏览过

How to Find Element Index with Binary Search in C  ?

C 中的高效二分查找实现

在排序容器中查找元素的索引或迭代器是 C 中的基本操作。然而,标准库的 std::binary_search 算法仅返回一个布尔值,指示元素是否存在,而不是其位置。

考虑容器已排序的情况,出于效率原因,二分搜索算法更可取。需要满足此需求的实现。

自定义迭代二分搜索

一种方法是实现自定义迭代二分搜索算法。下面是一个示例实现:

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

    if (i != end &amp;&amp; !(val < *i))
        return i; // found
    else
        return end; // not found
}</code>
登录后复制

该算法使用 std::lower_bound 有效地查找指向所搜索元素的迭代器。如果找到的值与 val 不匹配,则返回 end() 迭代器。

替代解决方案

另一种选择是使用 std::set,它保证元素排序并提供 find(T key) 方法,该方法返回给定项目的迭代器。但是,这可能不适合需要重复元素的情况。

以上是如何在 C 中使用二分查找查找元素索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!