这道题不知道是我理解错误还是咋的,我是做的很简单了。我用了一个辅助数组,用三个指针分别指向这三个数组,对两个指针所指向的数组元素进行比较,谁小就保存谁的值,当指向辅助数组的指针走到中间时,其得到的就是中数。
这道题我写的算法类似于归并排序,时间复杂度是O(n) 空间复杂度是O(1)
#include<stdio.h>
int middlenumber(int a[],int origin_number,int b[])
{
int c[2*origin_number];
int i,j,k;
i = j = k = 0;
int middlenumber = 0;
while(i < origin_number)
{
if(a[j] <= b[k])
{
middlenumber = a[j];
j++;
i++;
}
else
{
middlenumber = a[k];
k++;
i++;
}
}
return middlenumber;
}
int main(int argc, char const *argv[])
{
int a[5] = {11,13,15,17,19};
int b[5] = {2,4,6,8,20};
int middle = middlenumber(a,5,b);
printf("middlenumber is %d\n",middle);
return 0;
}
运行截图