新闻动态

行业新闻企业新闻安博电竞

【算法基础】整数二分查找法 lm2PX5Tg

安博电竞

chatgpt,算法AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

👦个人主页:@Weraphael
✍🏻作者简介:目前是C语言学习者
✈️专栏:【C/C++】算法
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍


目录

一 、基础思想

<图片来源于百度>
chatgpt,整数找法AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

如上动图所示,若在一个有序的数组中查找一个数,binary_search(二分查找)需要查找三次,而sequential_search(顺序查找)则需要11次 。
由此二分的分查优点是查找次数少,查找速度快,平均性能好并且其时间复杂度O(log(n))

二、运用场景

在一个数组内,若要查找一个数字,要求找到这个元素的算法下标(开始位置或者结束位置),并且这个数组范围内的元素都具有单调性,因此可以用二分查找法来做。

三 、基础分析

l - 左边界
r - 右边界
n - 元素个数
val - 查找元素
a[] - 原数组

情况1:mid = (l + r + 1) / 2

chatgpt,整数找法AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

情况2:mid = (l + r ) / 2

chatgpt,AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

四、代码模板及使用条件

模板1

当我们将区间[l,r]划分成[l,mid][mid + 1,r]时,其更新操作是r = mid或者l = mid + 1,计算mid时不需要+1,即mid = (l + r)/2 。

int binary_search1(int l, int r){r = mid - 1;}}return l;//由于当 l=r 时 ,while 循环停止,//因此最后的返回值既可以是 l 也可以是 r}

使用条件

假设初始时二分区间为[l,r],每次二分都会缩小范围,当你发现左边界l要更新为mid时,此时就要用模板2;如果左边界I更新为mid + 1,此时就使用模板1,所以模板的使用条件是根据代码而使用的。

五 、边界问题分析

假设模板2中的mid没有+1,此时mid = (l + r) / 2,就会发生边界问题  。例如当 l 和 r 相差1的时候,l + 1 = r 时,带入得,mid = (2l + 1) / 2,下取整,mid = l 。左边界再次更新为l = mid = l,l更新还是l,就会发生死循环。

六、例题

<牛客网例题,点击跳转>

1、例题描述

chatgpt,AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

2 、思路

chatgpt,AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

用二分查找第一个 >= val 的位置,查找成功则返回下标,否则返回 -1

3、代码实现

chatgpt,AI,人工智能,聊天机器人,女友聊天机器人,在线ai对话,二次元聊天

chatgpt免费软件,chatgpt api 免费接口,chatgpt 聊天机器人教程,chatgpt 指令大全,chatgpt app

【算法基础】整数二分查找法

跨足全球市场 :百度CHATGPT的国际化布局

百度的CHATGPT正以雄心勃勃的国际化布局,迈向全球市场 。其多语言支持和跨文化的生成能力,为不同地区和语种的用户带来了更智能、更亲近的体验 。