ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

二分查找:原理、实现与实战

2026/10/3 8:47:12 拓冰建站 浏览量
二分查找:原理、实现与实战 1. 什么是二分查找二分查找Binary Search是一种在有序数组中查找目标元素的高效算法。它的核心思想是每次将查找区间缩小一半通过不断比较中间元素与目标值的大小关系快速定位目标位置。大家都知道指数爆炸是吧但二分查找每次缩小一半我称之为对数萎缩所以十分的快。2. 算法原理二分查找的基本步骤如下初始化左边界 left 为 0右边界 right 为数组长度减 1。计算中间位置 mid left (right - left) / 2避免整数溢出。比较 nums[mid] 与目标值 target若 nums[mid] 等于 target直接返回 mid。若 nums[mid] 小于 target说明目标在右半部分令 left mid 1。若 nums[mid] 大于 target说明目标在左半部分令 right mid - 1。这里的加一减一很重要不然边界值搜不到向下取整搜不到最大的。重复上述步骤直到 left 大于 right此时说明目标不存在返回 -1。3. 代码实现下面给出一个标准的二分查找 c 实现//二分查找 #includebits/stdc.h using namespace std; int n,x; int a[100]; int main() { cinnx; for(int i1;in;i) { cina[i]; } int l1,rn; int mid; while(lr) { mid(lr)/2; if(a[mid]x) { coutmid; return 0; } else { if(a[mid]x) { lmid1; } if(a[mid]x) { rmid-1; } } } cout没有找到; }4. 常见变体在实际应用中二分查找还有一些常见变体例如查找第一个等于目标值的位置当 nums[mid] 等于 target 时不立即返回而是继续向左收缩直到找到最左边界。查找最后一个等于目标值的位置当 nums[mid] 等于 target 时继续向右收缩直到找到最右边界。 这两个都是在等于的情况下套一个while就行了。查找第一个大于等于目标值的位置用于解决「插入位置」类问题。查找最后一个小于等于目标值的位置常用于区间查询场景。5. 注意事项使用二分查找时需要注意以下几点数组必须是有序的否则结果不可靠。计算中间位置时推荐使用 left (right - left) / 2避免 left right 溢出。循环条件 left right 与 left right 对应不同的边界处理逻辑需根据场景选择。对于浮点数二分或二分答案类问题需要设置合适的精度或迭代次数。6. 总结多看多练把常见变体写一下这个还是简单