二分查找(Binary Search) 是一种高效的查找算法,适用于 有序数组 或 有序列表。它的基本思想是通过将搜索范围逐渐缩小到目标元素所在的一半,从而大大减少查找的次数。
二分查找的基本原理
排序:二分查找只能在有序数据中使用,数据必须是递增或递减顺序排列的。跳出循环的条件:左边值>右边值,其余都应进入循环,所以for left<=right
选择中间元素:每次查找时,选取当前范围的中间元素。
比较大小:将目标值与中间元素进行比较:
-
如果目标值小于中间元素,则继续在左半部分查找;
-
如果目标值大于中间元素,则继续在右半部分查找;
-
如果目标值等于中间元素,查找成功,返回该元素的索引。
-
重复过程:每次查找时,范围缩小一半,直到找到目标值或者搜索范围为空。
二分查找的时间复杂度
由于每次查找将范围缩小一半,二分查找的时间复杂度为 O(log n),其中 n 是待查找的元素个数。相比于线性查找的 O(n),二分查找在处理大规模数据时更加高效。
点击查看代码
func search(nums []int, target int) int { left,right:=0,len(nums)-1 for left<=right { mid:=left+(right-left)/2 if target<nums[mid]{ right=mid-1 }else if target >nums[mid]{ left = mid+1 } if target ==nums[mid]{ return mid } } return -1 }
分类:
Go刷Leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~