Arrays 考虑到时间复杂性,如何将两个未排序的数组合并到另一个数组中
我有两个或更多阵列。我想形成一个新的数组,它是从两个或多个数组中排序的。 我不想把数组和以后的排序结合起来。我想让它走起来。 考虑了时间复杂度Arrays 考虑到时间复杂性,如何将两个未排序的数组合并到另一个数组中,arrays,sorting,time-complexity,Arrays,Sorting,Time Complexity,我有两个或更多阵列。我想形成一个新的数组,它是从两个或多个数组中排序的。 我不想把数组和以后的排序结合起来。我想让它走起来。 考虑了时间复杂度 任何编程语言/算法都很好。因此基本上需要为新数组中的每个位置找到最小的剩余值。 输入是包含n和m个元素的数组a和b。在两个数组中查找最小值。比较这两个值,并将较小的值设置为其数组中的最大值,以防止再次找到该值。用c设置最小值 伪代码: merge(a[n],b[m]){ c[n+m]; for (i = 0, i < n+m; i++){
任何编程语言/算法都很好。因此基本上需要为新数组中的每个位置找到最小的剩余值。 输入是包含n和m个元素的数组a和b。在两个数组中查找最小值。比较这两个值,并将较小的值设置为其数组中的最大值,以防止再次找到该值。用c设置最小值 伪代码:
merge(a[n],b[m]){
c[n+m];
for (i = 0, i < n+m; i++){
aMin = getMinValue(a);
bMin = getMinValue(b);
if(aMin < bMin) setMinValueToMax(a,aMin)
else setMinValueToMax(b,bMin)
c[i] = min(aMin,bMin)
}
return c;
}
merge(a[n],b[m]){
c[n+m];
对于(i=0,i
这里n是较大数组的大小。
GetMinValue将在O(n)中运行,只需迭代所有元素。如果不保存索引,SetMinValueToMax也将在O(n)中运行。for循环将处于O(n)状态。for的主体是0(3n)(2 x getMinValue+setMinValueToMax)。在大的O常数中,可以删除导致O(n^2)运行时的因子