前面有两个数组。 A = [20,4,21,6,3] B = [748,32,48,92,23 ......]
假设B非常大并且可以保存数组A的所有元素。
找到数组B所在的方式(包含数组A的所有元素)排序顺序。
以最有效的方式设计算法。
答案 0 :(得分:3)
这听起来像合并排序算法。你会发现大量的例子here。然后,您可以修改以适应。
答案 1 :(得分:2)
鉴于您的数组是整数数组,您可以使用Radix sort algorithm以线性时间B
对O(n)
进行排序。维基百科有一个很好的写作和示例python代码。
基数排序相对于元素数量是线性的。虽然它也依赖于数组的大小,但你把它当作一个常数;就像你将比较运算符也保持不变一样。例如,在对bignum进行排序时,比较运算符也将取决于整数大小!
答案 2 :(得分:0)
闻起来像家庭作业。基本上,从末尾开始写入数组B,跟踪你在A和B中读取的位置。
答案 3 :(得分:0)
试一试:
将数组A合并到B中。
使用快速排序算法。
答案 4 :(得分:0)
在从A到B添加元素之前,检查是否超过数组的大小,如果不是将A合并到B
然后快速排序,
但是,如果您只想将两个数组合并到一个新数组中,其中新数组具有两者的组合长度。这是一个快速启动,试试你是否可以从这里前进......
public double[] combineArrays(double[] first, double[] second) {
int totalLenth = first.length + second.length;
double[] newDoubles = new double[totalLenth];
for (int i = 0; i < first.length; i++) {
newDoubles[i] = first[i];
}
for (int j = first.length; j < newDoubles.length; j++) {
newDoubles[j] = second[j - first.length];
}
return newDoubles;
}
希望这有帮助,祝你好运。
答案 5 :(得分:0)
您还可以修改插入排序的想法:
0)进行所有必要的测试:如果数组为null,则更大的数组有足够的空间
1)在大数组末尾添加小数组
2)进行正常插入排序,但在小数组的开头
开始