【题单】3.二分法

二分法

  • 二分法算法讲解<- 点击即可跳转
  • 前言
  • 一.二分法
    • 总结
    • 1.简单
      • 1.1洛谷P2249 【深基13.例1】查找
    • 2.较难
    • 3.易错

二分法算法讲解<- 点击即可跳转

前言

有时间我就会更新这个题单,简单题直接给答案,是为了让第一次写这种题的人一次独立的思考,较难题会写出难点,思考和解决方案,易错题会写出易错点,思考和解决方案。其他的题单也会慢慢更新,链接也会贴在各个算法的讲解中,大家可以收藏方便以后快速找到,由于作者水平有限,不免有错误未发现,如果大家发现错误,或有好题目希望大家和我交流交流。制作不易,希望大家点赞收藏,谢谢!!!

一.二分法

总结

1.简单

1.1洛谷P2249 【深基13.例1】查找

洛谷P2249 【深基13.例1】查找
【题单】3.二分法_第1张图片

#include 
using namespace std;

int n, m;
int nums[1000005], num[100005];

int main() {
	cin >> n >> m;

	for (int i = 0; i < n; i++) {
		cin >> nums[i];
	}

	for (int i = 0; i < m; i++) {
		cin >> num[i];
	}

	for (int i = 0; i < m; i++) {
		int l = 0, r = n - 1, ans = -1;
		while (l <= r) {
			int mid = r + (l - r) / 2;
			if (nums[mid] >= num[i]) {
				if (nums[mid] == num[i]) {
					ans = mid + 1;
				}
				r = mid - 1;
			}
			else if (nums[mid] < num[i]) {
				l = mid + 1;
			}
		}
		cout << ans << " ";
	}

	return 0;
}

2.较难

3.易错

你可能感兴趣的:(算法,数据结构,c++,经验分享,笔记,学习,开发语言)