求助一道百度的面试题
m个长度相同的降序数组,假定中间没有相同的值,求最大的前K个数
思路一:两个数组的情况下,a1[n]和a2[n]
设有x1个前k大数在a1[n]中,x2前k大数在a2[n]中
则x1+x2=k; x1和x2中肯定有一个大于k/2,我们只需比较a1[k/2]和a2[k/2]谁大
我们就把它的前k/2个数取出来。剩下的递归取出。
m个数组的情况下,我们就可以比较a[k/m]大大小,每次可以得出前k/m个数
思路二:使用归并排序
问下具体代码怎么实现。谢谢了。
[解决办法]
输入:数组a1...am
输出:B[10]
function n_num(A,B,m)
1.C[m]={0}
2.for i=0 to 9
3.for k=0 to m
4.select max number from the 1st element of m arrays
5.B[i]=max
6.c[k]++;
7.a[k][0]=a[k][c[k]]