sorting - 在某些条件下快速排序中分区中的最小部分?

标签 sorting math probability quicksort partitioning

0 < a < 0.5保持不变。我们有一个 n-element数组作为输入。随机快速排序从数组中随机均匀地选择一个元素作为枢轴和分区。最小部分大于an的概率是多少? .我在注释中的简短回答很有可能1-2a .任何人都可以说这个概率是如何计算的?

最佳答案

较小分区的大小均匀分布在 [0, n/2] 范围内,因此它会小于 an 的概率是 an / (n/2) .所以它大于a的概率是 1 - an / (n/2) . an/(n/2)正是2a ,因此概率 1 - 2a .

这是一张图表,以防万一:

                     Pivot positions

                a·n    n/2            a·n+n/2   n 
                 v      v                v      v
<---------------------|||||||·---------------------|||||||>
                     /---^---\                    /---^---\
              smaller partition on left   smaller partition on right
                   bigger than a·n              bigger than a·n
                   size: n/2 - a·n           size: n - (a·n + n/2)
                             Total size: n - 2a·n
                              Probability: 1 - 2a

关于sorting - 在某些条件下快速排序中分区中的最小部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395064/

相关文章:

python - 如何对列表进行排序首先写入相同的元素,然后按升序排列

java - 为什么 array.sorts 对父数组进行排序?

c++ - 检查由 3 个点定义的角是内角还是外角

statistics - 重尾分布 - 威 bool

c# - 用C#以一定概率触发事件

python - 服从一定分布的随机数

java - 对非字母字符使用 Arrays.sort() ,例如 {'+' '1' 'D' }

java - 按对象的变量对对象的 LinkedList 进行排序

javascript - 将获得的积分转换为游玩时间(数学相关)

C#简单的数学运算得到奇怪的结果