杂记:
数组交换是成立,写在函数里,作为引用类型,副本是传过去的地址,引用地址就能真正修改数组的元素
是不能接受的复杂度。当n=时就会出问题了。
概述
就是取俩指针,i,j,根据某个条件的(通常三种)判定情况分类为不同操作,即可。
注意merge函数:
algorithm
af,al,bf,bl,c即可。
mergesort:{
mid=(left+right)/2;
if(left<right)
mergesort(left,mid)
mergesort(mid+1,right)
merge(left,mid,mid+1,right)
//分成长度为一的若干数组,其实排序是merge完成的
}
非递归p141
快排:qsort
随机数用法
srand ((usigned)time(null))
12/6
A1085
简单
A1089
思路差不多,晚点来做
A1029
#include<cstdio>
#include<algorithm>
using namespace std;
long int n1[2000010],n2[2000010],n3[4000010];
int main(){
int n,m;
scanf("%d",&n);
if(n!=0){
for(int i=0;i<n;i++)
scanf("%ld",&n1[i]);
}
scanf("%d",&m);
for(int i=0;i<m;i++)
scanf("%ld",&n2[i]);
merge(n1,n1+n,n2,n2+m,n3);
printf("%ld",n3[(n+m-1)/2]);
return 0;
}
虽然答案写的很谨慎,但是直接merge也没超时
merge和答案给的其实是一样的,答案就是没执行完的merge