欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > C++二分查找

C++二分查找

2025/6/20 3:31:44 来源:https://blog.csdn.net/2401_88059882/article/details/148713900  浏览:    关键词:C++二分查找

1.算法

1.1 什么是算法

算法是一种解决问题的方法,它并不是一个新的知识点,而是讲我们学习过的知识点运用起来解决问题。

1.2 算法的时间复杂度

时间复杂度指的是算法所要执行的次数,而不是时间,我们学习的每个算法都会告知时间复杂度,但是目前我们先不学习如何计算算法的时间复杂度,以后再说。

2.二分查找

2.1 704. 二分查找 - 力扣(LeetCode)

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果 target 存在返回下标,否则返回 -1

2.2 什么是二分查找

二分查找是一种高效的、方便的、简单的查找数据的方式,二分查找一般运用与有序序列中,这样才能进行二分查找。

2.3 二分查找的原理

我们先定义两个指针,分别指向数组的第一个和最后一个数的下标,我们在算出这两个指针之间的中间下标,定义为变量mid,如果mid的值比要查找的数大,那么就把右指针移动到mid-1的位置,如果小,就把左指针移动到mid+1的位置,如果相等,那么输出mid。

2.4 二分查找的模板

while(left < right)
{int mid = (left + right) / 2;if(arr[mid] > target)right = mid - 1;else if(arr[mid] < target)left = mid + 1;else{cout << mid << endl;break;}
}

注:二分查找的时间复杂度为O(Logn)

2.5 参考答案

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;while(left <= right){int mid = (left + right) / 2;if(nums[mid] == target)return mid;else if(nums[mid] > target)right = mid - 1;elseleft = mid + 1;}return -1;}
};

再见!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词