与 QuickSort 中长度为 x 的数组相比,n 平均值是什么意思

what is meaning n average compared from array with length x in QuickSort

in this formula and continue 我想如果我们假设 n 等于 3,那么我们就有像 A={4,5,7}[​​=11=] 这样的数组

根据公式,我们从 n=3 得到 8,这意味着长度为 3 的数组的平均比较是 8,这太奇怪了!

  1. quickSort 中到底发生了什么来获得如此短的平均比较 8 形式数组!并且发生了很多比较,那太糟糕了!是真的吗?

我认为如果我们将数组与 4 步进行比较比使用快速排序快得多!

所以你的问题似乎是关于公式的

E[X] = E[sum(i, 1, n-1, sum(j, i+1, n, pi,j))]

在this image you uploaded在另一个问题中。

这里E[X]表示期望值。简单来说:如果您多次进行实验(对随机数组进行排序),值 X 将取平均值。

pi,j 是算法 运行 期间项目 i 和项目 j 相互比较的机会。对于一个好的算法,恰好将项目 i 与项目 k 进行比较,将项目 k 与项目 j 进行比较,这通常使得没有必要真正比较项目 i 和项目 j。所以算法越好,这个概率pi,j.

在最坏的情况下,例如当n只有3时,你可以有pi,j = 1。如果你再计算公式,你会得到n =3, E[X]=3 因为 (i,j) 只有三种组合:(1,2)、(1,3) 和 (2,3)。这意味着对于 n=3,总是进行 3 次比较。这对所有好的算法都是平等的,因为你不能利用 item_i < item_k < item_j.

对于较大的 n,有很多机会利用不需要显式测试所有 item_i 与所有 item_j 的优势。例如,详细分析可在 Khan Academy article.

中找到