时间复杂度 O(log(m + n))
#include "stdio.h"
char arr1[4]={1,2,3,4};
char arr2[5]={5,6,7,8,9};
#define MIN(x,y) (x > y) ? y : x
char findk(int i,int j,int k)
{
char midx=0;
char midy=0;
if(i >= sizeof(arr1)) return arr2[j+k-1];
if(j >= sizeof(arr2)) return arr1[i+k-1];
if(k==1) return MIN(arr1[i],arr2[j]);
if(i + k/2 -1 < sizeof(arr1))
{
midx = arr1[i+k/2 -1];
}
else
{
midx=0x4f;
}
if(j+ k/2 -1 < sizeof(arr2))
{
midy = arr2[j+k/2 -1];
}
else
{
midy = 0x4f;
}
if(midx < midy)
{
return findk(i+k/2,j, k-k/2);
}
else
{
return findk(i,j+k/2, k-k/2);
}
}