数组的“分区数”和“范围”是多少?

时间:2013-08-12 07:02:29

标签: arrays sorting

根据Array.Sort的MSDN文档,

  

如果分区数超过2 * logN,其中N是输入数组的范围,则使用Heapsort算法。

我不知道的是数组的“分区数”和“范围”是什么。它们是什么?

1 个答案:

答案 0 :(得分:2)

排序中的分区基本上是基于枢轴点的列表的一部分。例如,使用快速排序算法对以下内容进行排序:

                First Pass          Second Pass
3              3                     1
8              1                     3
5 <- Pivot     5---------            5
1              8                     7
7              7                     8

在第一遍中,有两个分区基于小于或大于 5

的数字

范围是最大值和最小值之间的差异,因此在此示例中 7 (8 - 1)

所以你提问的那一行就是

 (2 * log(7)) > 2    == Use HeapSort
 1.691 > 2              false