performance - 两个未排序的单链表到一个已排序的单链表

标签 performance algorithm sorting data-structures time-complexity

给定两个大小为 MN 的未排序单链表。任务是创建一个排序的链表。不应创建新节点。 我想到了两种方法。

方法一:

分别对 MlogM 和 NlogN 中的每个列表进行排序。然后合并两个排序列表。
时间复杂度:O( MlogM + NlogN )

方法 2:

将第二个列表附加到第一个列表的末尾。然后对列表进行排序。
时间复杂度:O( (M + N) log(M + N) )

哪种方法更好?
还有更好的方法吗?

最佳答案

渐近地讲 - 它是一样的。

如果n<m然后:

O(nlogn+ mlogm) = O(mlogm)
and 
O(n+m)log(n+m)) = O(nlog(n+m) + mlog(n+m)) = O(nlog(m) + mlog(m)) = O(mlogm)

对称地,如果m<n都是O(nlogn)

其实对于n=m , 方法 1 是 merge sort 的第一步

关于performance - 两个未排序的单链表到一个已排序的单链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12286510/

相关文章:

iphone - 如何根据一个属性对对象的 NSArray 进行排序

python - 如何对称排序相关矩阵?

c++ - 公共(public)变量是否比使用 getter 和 setter 更快?

mysql - 在运行时获取列类型会影响 MySQL 性能吗?

string - 后缀数组实现错误

algorithm - 在嘈杂的数据中寻找公共(public)集

python - 根据圆的面积更改 numpy 数组中的值

javascript - 在javascript中自定义排序

python - 寻找交叉点

performance - 64 位程序是否比 32 位版本更大更快?