一道算法题~~~(比看)
设X[n]和Y[n]为已经排好序的数组,设计一个O(lgn) 时间的算法,
找出X和Y的2n 个数的中位数~~~
大家 帮帮忙啊~~
打不开~~
算法是这样的
int F(int i)
{
if(x[i-1]>=y[n-i]&&x[i]<=y[n-i+1] ) ----------n 为 数组的个数(记住)
return x[i-1];
else
{
if(x[i-1]<y[n-i]&&x[i]<=y[n-i+1])
return F(n/2+i/2);
if(x[i-1]>y[n-i+1]&&x[i]>=y[n-i])
return F(i/2);
else{
if(x[i-1]>=y[n-i]&&x[i]<=y[n-i+1] ) ----------n 为 数组的个数(记住)
return x[i-1];
else
{
if(y[i-1]<x[n-i]&&y[i]<=x[n-i+1])
return F(n/2+i/2);
if(y[i-1]>x[n-i+1]&&y[i]>=x[n-i])
return F(i/2);
}
}
}