几何平均枢轴

时间:2014-02-09 06:26:53

标签: algorithm math time-complexity quicksort

我是博士生,我正在研究我的项目,

如果我使用几何平均值作为枢轴将数组划分为近似两个相等的部分,我想知道最坏情况下的分区时间复杂度是多少?

结果: -

Vladimir Yaroslavskiy双枢轴快速选择分区: - 2307601193纳秒

几何平均枢轴快速选择分区: - 8661916394纳秒

我们知道它非常昂贵并且快速分区速度要慢得多。有许多算法比快速选择要快得多,但在我们的项目中我们不会直接使用它们。

几何平均枢轴的示例: -

  

/////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////

     

输入 - 789654123,700,10 ^ 20,588412,900,5,500

     

几何平均值:-( 789654123 * 700 * 10 ^ 20 * 588412 * 900 * 5 * 500)^(1/7)= 1846471

     

通过1- 500 700 5 588412 900 |< ---> | 10 ^ 20 789654123

     

几何平均值:-(500 * 700 * 5 * 588412 * 900)^(1/5)= 984

     

通过2-500,700,5,900,|< ---> | 588412,10 ^ 20,789654123
  ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////

通过这种方式,我们可以将数组分成近似两个相等的部分。

我的问题是,如果我使用几何平均值作为枢轴将数组划分为大约两个相等的部分,那么最坏情况(最差的不平衡分区)时间复杂度会是什么?

注意: - 我们在数据集中没有使用-ve no。

2 个答案:

答案 0 :(得分:1)

2 2 0 ,2 2 1 ,2 2 2 ,...,2 2 n - 1 具有几何平均值

  

(2 2 0 ·2 2 1 ·2 2 2 < / sup> ·...·2 2 n - 1 (1 / n)

     

=(2 2 0 + 2 1 + ... 2 n ( 1 / n)

     

=(2 2 n + 1 - 1 (1 / n)

     

= 2 (2 n + 1 - 1)/ n

     

= 2 (2 n + 1 - 1)2 -log n

     

= 2 (2 n + 1 - log n - log n)

请注意,此数字是(大约)2 2 n - log n 。这意味着您的分区只会将大约log n项分成数组的第二组,与整个数组大小相比,这是一个非常小的数字。因此,您期望对于这种数据集,您将更接近Θ(n 2 )性能而不是Θ(n log n)性能。但是,我无法得到一个确切的渐近值,因为我不知道究竟会有多少轮。

希望这有帮助!

答案 1 :(得分:1)

几何平均值等于对数的算术平均值,所以我们只需要找到算术平均值严重分解并取其指数的东西。一个例子是阶乘,如果你有一个列表

1!, 2!, 3!, 4!, ..., n!

取算术平均值将在最后一个元素之前准确分割。证明:此数组的总和大于最后一个元素:

s_n > n!

因此,算术平均值大于之前的元素:

av_n = s_n/n > (n-1)!

因此,快速选择需要n轮,其性能将为O(n ^ 2),而平均性能则为O(n)。要使用几何平均值获得相同的行为,您必须考虑此

的指数列表
a^(1!), a^(2!), ..., a^(n!)

适用于任何a>10<a<1。基于几何平均值的快速选择的结果表现为O(n ^ 2)。