问题:
提问:
帮我解决的人是我爸
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <bits/stdc++.h> #define space ' ' using namespace std; int main(){ int n; int a[33333]; cin>>n; for(int i = 1;i <= n;i++){ cin>>a[i]; } sort(a+1,a+n+1); if(n%2==1){ cout<<(a[n/2]+a[n/2+1])/2; }else{ cout<<a[n/2+1]; } cout<<endl; for(int i = 1;i <= n;i++)cout<<a[i]<<' '; return 0; }
|
这道题哪里错了啊QAQ
解答:
这个人竟然用我用不了的万能开头,不可饶恕!!!(开玩笑)
老规矩(只用了一次),先看题目,求中间数这种简单的事情还用问。开干(事非经过不知难),按照我一开始的思路,我写了一个桶排,一运行,发现不对劲,示例数据里面有重复的。如果用桶排的话重复数据就没了,然后我又尝试冒泡排序,也不行,实在是太慢了。最后没办法上度娘查,好不容易找到一篇CSDN的文章才知道原来在algorithm
库有一个sort排序算法时间复杂度那可不是比冒泡快一星半点,而且逻辑代码不用自己写,调用函数就行了,NICE!!!搞定了排序,剩下的就很简单了,实现的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include "iostream" #include "algorithm"
using namespace std; int n, a[30001];
int main() { cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; } sort(a, a + n + 1); if (n % 2 == 0) { cout << (a[n / 2] + a[n / 2 + 1]) / 2; } else { cout << a[n / 2 + 1]; } }
|
搞定,轻松加愉快!
哦,对了,那个说要叫爹,说到做到哦~~~~