王道 数据结构 p17 第11题
#include<iostream>
using namespace std;
/*法一:次次优解 在算法书写正确以及时间复杂度分析正确情况下会被扣2分
int searchM(int A[],int B[],int n)
{
int C[n+n],k=0,i=0,j=0;
while(i<n&&j<n)
{
if(A[i]<=B[j])
C[k++]=A[i++];
else
C[k++]=B[j++];
}
while(i<n)
C[k++]=A[i++];
while(j<n)
C[k++]=B[j++];
return C[n-1];
}时间复杂度O(n),空间复杂度O(n)
*/
//法二 次优解 在算法书写正确以及时间复杂度分析正确情况下会被扣1分
int searchM(int A[],int B[],int n){
int k=0,i=0,j=0;
while(i<n&&j<n)
{
if(A[i]<=B[j])
{
i++;
k++;
if(k==n)
return A[i-1];
}
else
{
j++;
k++;
if(k==n)
return B[j-1];
}
}
}
//时间复杂度O(n),空间复杂度O(1)
//最优解对本人过于复杂 考场上不会想到 想到也写不出来,故放弃
int main(){
int A[]={5,13,15,17,19};
int B[]={2,4,6,8,10};
cout<<"中位数是"<<searchM(A,B,5);
}