当前位置: 首页> 房产> 家装 > 问题 E: 二分查找

问题 E: 二分查找

时间:2025/7/18 15:19:06来源:https://blog.csdn.net/2301_80550438/article/details/141566206 浏览次数:1次
题目描述

给出有n个元素的由小到大的序列,请你编程找出某元素第一次出现的位置。(n<=106)

输入

第一行:一个整数,表示由小到大序列元素个数:下边n行,每行一个整数:最后一行一个整数x,表示待查找的元素。

输出

如果x在序列中,则输出x第一次出现的位置,否则输出-1.

样例输入 Copy
5
3
5
6
6
7
6
样例输出 Copy
3

哎,也是通过自己的努力把这个题给秒掉了,还是有点开心的啊哈哈哈哈哈哈哈,随便了,虽然是一道很简单的题目。,应该也不会太有成就感

#include<iostream>
#include<algorithm>
using namespace std;
int l, r, n, x, mid;
int a[1000001];
int main()
{std::cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}l = 1, r = n;cin >> x;int flag = 0;while (l <=r){mid = (l + r) / 2;if (a[mid] == x){flag = 1;}if (a[mid] < x){l = mid+1;}if (a[mid] >= x){r = mid;}if (l == r&&a[mid]==x){break;}}if (flag == 1){cout << r<<endl;}else if (flag == 0){cout << -1 << endl;}return 0;
}

关键字:问题 E: 二分查找

版权声明:

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

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

责任编辑: