Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 为什么合并排序复杂性被认为是O(n logn),这不是全部复杂性?_Sorting_Big O_Mergesort - Fatal编程技术网

Sorting 为什么合并排序复杂性被认为是O(n logn),这不是全部复杂性?

Sorting 为什么合并排序复杂性被认为是O(n logn),这不是全部复杂性?,sorting,big-o,mergesort,Sorting,Big O,Mergesort,我知道在最坏的情况下会调用merge sort n log n,但是每次调用合并分割参数数组的复杂性如何呢 合并排序实际上应该是n log n*排序时间的意思还是什么 在“传统”合并排序中,每次通过数据都会使已排序子部分的大小加倍。第一次传递后,文件将被排序为长度为2的部分。第二次通过后,长度为4。然后是八、十六等,直到文件大小 有必要将已排序部分的大小增加一倍,直到有一个部分包含整个文件。要达到文件大小,需要将节大小加倍lg(N),每次传递数据所需的时间与记录数成比例。在“传统”合并排序中,每

我知道在最坏的情况下会调用merge sort n log n,但是每次调用合并分割参数数组的复杂性如何呢

合并排序实际上应该是n log n*排序时间的意思还是什么

在“传统”合并排序中,每次通过数据都会使已排序子部分的大小加倍。第一次传递后,文件将被排序为长度为2的部分。第二次通过后,长度为4。然后是八、十六等,直到文件大小

有必要将已排序部分的大小增加一倍,直到有一个部分包含整个文件。要达到文件大小,需要将节大小加倍lg(N),每次传递数据所需的时间与记录数成比例。

在“传统”合并排序中,每次传递数据都会使已排序的子节大小加倍。第一次传递后,文件将被排序为长度为2的部分。第二次通过后,长度为4。然后是八、十六等,直到文件大小


有必要将已排序部分的大小增加一倍,直到有一个部分包含整个文件。要达到文件大小,需要将节大小加倍lg(N)次,每次传递数据都需要与记录数成比例的时间。

没有合并排序实际上是
N*log(N)
在每次合并调用中,它需要
O(N)
时间和
O(N)
额外空间,没有合并排序实际上是
n*log(n)
在每次合并调用中,它需要
O(n)
时间和
O(n)
额外的空间,在我们必须对非常大的文件进行排序时,它是最好的。确切地说,每次数据传递都需要与记录数量成比例的时间。这不算在内for@CanisLupus-每个过程的时间复杂度为O(n),对于双向自底向上合并排序,有log2(n)个过程,因此总时间复杂度为O(n log(n))。确切地说,数据的每个过程所花费的时间与记录数成比例。这不算在内for@CanisLupus-每个过程的时间复杂度为O(n),对于双向自底向上合并排序,有log2(n)个过程,因此总时间复杂度为O(n log(n))。