ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法分析-快速排序

2022-01-08 11:58:16  阅读:166  来源: 互联网

标签:le frac 元素 算法 数组 分隔 排序 快速 1N


对于QuickSort,证明第一次分隔阶段(在指针交叉之前)用的平均交换次数是: N − 2 6 \frac{N-2}{6} 6N−2​

前提

  1. 待排序数组为 N N N 个顺序随机且元素互异的数组;
  2. 使用最后一个元素作为分隔元(partitioning element);
  3. 数组索引为到 1 1 1 到 N N N

假设

  • 分隔元是 N N N 个数中的第 j j j 个最大元素

证明

  1. 在除了分隔元剩余的 N − 1 N-1 N−1 个元素中,有 j − 1 j-1 j−1 个元素小于分隔元,有 N − j N-j N−j 个元素大于分隔元

  2. 这 N − 1 N-1 N−1 个元素每个元素大于分隔元的概率为 p = N − j N − 1 p=\frac{N-j}{N-1} p=N−1N−j​前 j − 1 j-1 j−1 个元素中大于分隔元的个数(即交换次数)的期望为: E = ( N − j ) ( j − 1 ) N − 1 E=\frac{(N-j)(j-1)}{N-1} E=N−1(N−j)(j−1)​

  3. 对于每个 1 ≤ j ≤ N 1\le j \le N 1≤j≤N ,其出现的概率是 1 N \frac1N N1​,即可解得平均交换次数为:
    T = 1 N ∑ 1 ≤ j ≤ N ( N − j ) ( j − 1 ) N − 1 T = N − 2 6 \begin{aligned} &T = \frac 1N \sum_{1\le j\le N}\frac{(N-j)(j-1)}{N-1} \\ \\ &T= \frac {N-2}{6} \end{aligned} ​T=N1​1≤j≤N∑​N−1(N−j)(j−1)​T=6N−2​​

Reference

  1. C. A. R. Hoare, Quicksort, The Computer Journal, Volume 5, Issue 1, 1962, Pages 10–16, \https://doi.org/10.1093/comjnl/5.1.10

标签:le,frac,元素,算法,数组,分隔,排序,快速,1N
来源: https://blog.csdn.net/weixin_36994568/article/details/122377721

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有