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