#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
scanf("%d",&n);
vector<int>_1(n);
for(int i=0;i<n;i++){
scanf("%d",&_1[i]);
}
scanf("%d",&m);
vector<int> _2(m);
for(int i=0;i<m;i++){
scanf("%d",&_2[i]);
}
int i=0,j=0,cnt=0;//i没有初始化
int c[n+m];
while(i<n&&j<m){
if(_1[i]<=_2[j]){
c[cnt++]=_1[i];
i++;
}
else{
c[cnt++]=_2[j];
j++;
}
/*while(i<n) c[cnt++]=_1[i++];
while(j<m) c[cnt++]=_2[j++]; *///必须放在外面否则过程中就会执行
}
while(i<n) c[cnt++]=_1[i++];
while(j<m) c[cnt++]=_2[j++];
int temp=(float)cnt/2-0.5;
printf("%d",c[temp]);
return 0;
}
总结
1.从零下表开始找中间元素不是一件容易事~~,不能直接cnt/2,这样奇数可以偶数就错了,
2.二路归并的
int temp=float(cnt/2)-0.5;
这题不难相信大部分人都错在这吧 哦不~只有我这个小菜鸟吧
英语
问题 无