我正在尝试将排序后的数组合并为第三个排序后的数组,但是我看不到任何方法可以做到O(n),仅在O(n*n).A中,我错了吗?有办法做到O(n)吗?
O(n)
O(n*n)
编辑:
其实问题有点不同:
我有2个排序的跳过列表,我想将它们合并到一个新的排序的跳过列表中,而无需更改输入(即两个跳过列表)。
我在想:
将列表放在两个数组中
使用MergeSort合并两个数组(这需要O(n)运行时)
从排序后的数组中构建一个新的跳过列表…。//我不确定其运行时
有任何想法吗 ?
问候
您将保持两个循环,并在将每个“边”的值拉入第三个数组时在每个循环之间进行切换。如果arr1的值小于当前的arr2,则将arr1的值填充到arr3中,直到达到相等或变大,然后翻转过程并开始将值从arr2中拉出。然后只是不断地来回弹跳,直到两个源数组中都没有剩余。
得出O(n + m),又称O(n)。