二分查找(c++)

二分查找(c++),第1张

二分查找(c++)

呵,提到查找一个数,肯定有很多人会说:“啊,暴力啊。”
说的不错,暴力是可以的

...
for (int i = 1; i <= n; i++) 
	if (a[i] == k) {
		cout << "YES" << endl;
		return 0;
	}
cout << "NO" << endl;
...

但是,很明显的缺点:费时O(n^2)
所以,我们需要一个更牛叉的办法:二分查找

int Find (int l, int r, int k) {
	int mid = l + r >> 1;
	if (a[mid] == k) return mid;
	if (a[mid < k] return Find (l + 1, r, k);
	if (a[mid] > k) return Find (l, r - 1, k);
}

当然,你也可以用系统自带的

lower_bound();
upper_bound();
例题 1.P2249 2.P1102 3.P1873 4.P1024 5.P1182

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5710715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存