Time complexity 合并排序在合并时使用什么排序技术

Time complexity 合并排序在合并时使用什么排序技术,time-complexity,mergesort,Time Complexity,Mergesort,在合并排序的最后一个步骤中,我们有两个排序列表,并试图将它们合并到一个排序列表中,逻辑将如何进行 这就是我天真的想法: 取列表#1中的每个元素,并将其与列表#2中的每个元素进行比较,找出其在列表#2中的位置。基本上类似于插入排序 但很明显,事情不是这样的,因为这给了我O(n^2)的复杂性。 但是合并排序是O(nlogn)。那么最后一步是如何进行的呢?它使用合并排序。合并排序没有单独的排序算法,它是一种排序算法 原来的列表已经排序,所以最小的元素总是在开头。比较A和B。取两者中较小的一个,并将其添

在合并排序的最后一个步骤中,我们有两个排序列表,并试图将它们合并到一个排序列表中,逻辑将如何进行

这就是我天真的想法: 取列表#1中的每个元素,并将其与列表#2中的每个元素进行比较,找出其在列表#2中的位置。基本上类似于插入排序

但很明显,事情不是这样的,因为这给了我O(n^2)的复杂性。
但是合并排序是O(nlogn)。那么最后一步是如何进行的呢?

它使用合并排序。合并排序没有单独的排序算法,它是一种排序算法


原来的列表已经排序,所以最小的元素总是在开头。比较A和B。取两者中较小的一个,并将其添加到结果列表的末尾。重复此操作,直到两个源列表都为空。

它使用合并排序。合并排序没有单独的排序算法,它是一种排序算法


原来的列表已经排序,所以最小的元素总是在开头。比较A和B。取两者中较小的一个,并将其添加到结果列表的末尾。重复此操作,直到两个源列表都为空。

这在很大程度上取决于您如何组织正在排序的数据

合并排序通常主要用于外部排序,例如对磁盘上的文件进行排序。在这种情况下,您通常从一些输入文件中获取输入,并将结果写入一个单独的输出文件

如果要对链表进行排序,通常也会进行同样的操作——取N个输入列表,生成一个输出列表。由于只需操纵链接即可将元素从一个列表移动到另一个列表,因此不需要(太多)额外的存储或时间

您似乎真的在询问如何在适当的位置对数组进行排序。如果您想将排序数组合并到适当的位置,有许多已知的排序,但它们有些不重要


[我不喜欢只使用链接,我想这才是真正的答案,但这里的算法确实有点难以概括。]

这在很大程度上取决于您如何对正在排序的数据进行结构化

合并排序通常主要用于外部排序,例如对磁盘上的文件进行排序。在这种情况下,您通常从一些输入文件中获取输入,并将结果写入一个单独的输出文件

如果要对链表进行排序,通常也会进行同样的操作——取N个输入列表,生成一个输出列表。由于只需操纵链接即可将元素从一个列表移动到另一个列表,因此不需要(太多)额外的存储或时间

您似乎真的在询问如何在适当的位置对数组进行排序。如果您想将排序数组合并到适当的位置,有许多已知的排序,但它们有些不重要

[我不喜欢只使用链接,我想这才是真正的答案,但这里的算法确实有点难以概括。]