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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 为什么我们在Timsort中选择最小运行大小作为2的幂?_Sorting_Timsort - Fatal编程技术网

Sorting 为什么我们在Timsort中选择最小运行大小作为2的幂?

Sorting 为什么我们在Timsort中选择最小运行大小作为2的幂?,sorting,timsort,Sorting,Timsort,我在读关于他的书。我偶然发现了下面的句子 Minrun的选择范围为32到64(含32到64),因此数据大小除以Minrun等于或略小于2的幂 为什么我们将最小运行大小保持为2的幂?如果我们选择这样的尺寸,内部是否有任何特殊的优化?请帮帮我。这句话后面有对源代码的引用。那里的评论说:“在这里选择2的一些幂很重要,这样合并最终会达到完美的平衡(见下一节)。”假设这是一个优化的Timsort,它会在每次传递时改变合并方向(原始数组和临时数组之间),然后应该选择minrun,这样数据的大小除以min r

我在读关于他的书。我偶然发现了下面的句子

Minrun的选择范围为32到64(含32到64),因此数据大小除以Minrun等于或略小于2的幂


为什么我们将最小运行大小保持为2的幂?如果我们选择这样的尺寸,内部是否有任何特殊的优化?请帮帮我。

这句话后面有对源代码的引用。那里的评论说:“在这里选择2的一些幂很重要,这样合并最终会达到完美的平衡(见下一节)。”假设这是一个优化的Timsort,它会在每次传递时改变合并方向(原始数组和临时数组之间),然后应该选择minrun,这样数据的大小除以min run,在这句话之后就有了对源代码的引用。那里的评论说:“在这里选择2的某些幂很重要,这样合并最终会达到完美的平衡(见下一节)。”假设这是一个优化的Timsort,它在每次传递时改变合并方向(原始数组和临时数组之间),那么应该选择minrun,以便将数据大小除以min run