news 2026/5/2 18:45:24

C++数据结构--二分搜索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++数据结构--二分搜索

一.什么是二分搜索

二分搜索(Binary Search),是一种在有序数组中查找特定元素的高效算法。

二分搜索算法,实际上就是对一颗BST树从root根节点开始搜索的过程,每一次搜索只会沿着一条路径搜索下去

核心思想:是每次定义索引left与right,每次找一个mid,比较mid索引的值与应找值val,之后缩小查找范围,循环操作,直到找到val或者循环结束。

二.非递归代码实现

非递归实现二分搜索借助循环,直到left小于等于right循环结束。

int BinarySearch(int arr[], int size, int val)//二分搜索(非递归) { int left = 0; int right = size - 1; int middle = (left + right)/2; while (left <= right) { if (val == arr[middle]) { return middle; } else if (val < arr[middle]) { right = middle - 1; middle = (left + right) / 2; } else { left = middle + 1; middle = (left + right) / 2; } } return -1; }

三.递归代码实现

递归代码实现借助递归代替循环,核心思路相同。

二分搜索(递归) int BinarySearch(int arr[], int val,int i,int j) { int mid = (i + j) / 2; if (i > j) { return -1; } else if(val<arr[mid]) { return BinarySearch(arr, val, i, mid - 1); } else if (val > arr[mid]) { return BinarySearch(arr, val, mid+1, j); } else if (val == arr[mid]) { return mid; } }

四.二分搜索的时间复杂度

由于二分搜索实际上是对BST树,从root根节点开始搜索的过程,所以二分搜索的平均时间复杂度为logn。空间复杂度为O(n)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 18:45:24

2025届毕业生推荐的十大AI学术方案解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理技术的AI写作工具&#xff0c;可辅助用户快速生成各类文本内容&#xff0c;…

作者头像 李华
网站建设 2026/5/2 18:35:03

绝地求生罗技鼠标宏配置:从新手到高手的完整指南

绝地求生罗技鼠标宏配置&#xff1a;从新手到高手的完整指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生中难以控制的武器后坐…

作者头像 李华
网站建设 2026/5/2 18:34:18

MinIO Go Client SDK性能优化秘籍:7个技巧让你的存储应用快如闪电

MinIO Go Client SDK性能优化秘籍&#xff1a;7个技巧让你的存储应用快如闪电 【免费下载链接】minio-go MinIO Go client SDK for S3 compatible object storage 项目地址: https://gitcode.com/gh_mirrors/mi/minio-go MinIO Go Client SDK是用于S3兼容对象存储的高效…

作者头像 李华
网站建设 2026/5/2 18:33:43

华硕笔记本终极CPU降压教程:用G-Helper轻松降低温度提升续航

华硕笔记本终极CPU降压教程&#xff1a;用G-Helper轻松降低温度提升续航 【免费下载链接】g-helper G-Helper is a fast, native tool for tuning performance, fans, GPU, battery, and RGB on any Asus laptop or handheld - ROG Zephyrus, Flow, Strix, TUF, Vivobook, Zenb…

作者头像 李华
网站建设 2026/5/2 18:32:59

Stripe Ruby 库配置完全手册:从 API 密钥到超时设置

Stripe Ruby 库配置完全手册&#xff1a;从 API 密钥到超时设置 【免费下载链接】stripe-ruby Ruby library for the Stripe API. 项目地址: https://gitcode.com/gh_mirrors/st/stripe-ruby Stripe Ruby 库是 Ruby 开发者集成 Stripe 支付功能的核心工具&#xff0c;通…

作者头像 李华