二分查找
首先,介绍一下我自己,本人是一个普通二本的专升本毕业生,这些年一直从事计算机工作,但是自己也没有很好的计算机的基础,因此开一些这方面的基础学习,可能说的并不是太对,就是记录下来方便自己去理解。
二分查找,主要是针对有序数组,没有重复元素的情况下,进行使用的。
自己使用C语言比较多,一般数组在C语言的内存分布,都是线性分布,也就是连续地址分布。
我从几道leetcode的题,来方便我自己了解这个算法,并且手工实现这个算法。
1 class Solution { 2 public: 3 int search(vector<int>& nums, int target) { 4 int left=0; 5 int right=nums.size()-1; 6 while(left<=right) 7 { 8 int middle= left+(right-left)/2; 9 if(nums[middle]>target) 10 { 11 right=middle-1; 12 }else if(nums[middle]<target) 13 { 14 left=middle+1; 15 }else{ 16 return middle; 17 } 18 } 19 return -1; 20 } 21 };
一共有2种写法,主要就是注意这个区间的问题,这里我的判断是用的(left<=right).
class Solution { public: int searchInsert(vector<int>& nums, int target) { int left=0; int right=nums.size()-1; while(left<=right) { int middle=left+(right-left)/2; if(nums[middle]>target) { right=middle-1; }else if(nums[middle]<target) { left=middle+1; }else { return middle; } } return right+1; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本