C#编程之经典算法——排序(五)
来源:互联网 发布:南京seo哪家好 编辑:程序博客网 时间:2024/06/11 03:04
平衡快排(Balanced Quicksort)与随机化快排(Randomization Quicksort)
平衡快排与普通快速的原理相同,只是尽可能地选择一个能够代表中值的元素作为关键数据,然后遵循普通快排的原则进行比较、替换和递归。通常来说,选择这个数据的方法是取开头、结尾、中间3个数据,通过比较选出其中的中值。
平衡快排示例
与平衡快排相似的排序就是随机化快排。
快速排序的最坏情况基于每次划分对主元的选择。基本的快速排序选取第一个元素作为主元。这样在数组已经有序的情况下,每次划分将得到最坏的结果。一种比较常见的优化方法是随机化算法,即随机选取一个元素作为主元。这种情况下虽然最坏情况仍然是O(n^2),但最坏情况不再依赖于输入数据,而是由于随机函数取值不佳。实际上,随机化快速排序得到理论最坏情况的可能性仅为1/(2^n)。所以随机化快速排序可以对于绝大多数输入数据达到O(nlogn)的期望时间复杂度。一位前辈做出了一个精辟的总结:“随机化快速排序可以满足一个人一辈子的人品需求。”
随机化快排除了参数索引的选择方法不同,其它部分与平衡快排完全相同,在此就不再另写示例方法。
- C#编程之经典算法——排序(五)
- C#编程之经典算法——查找(五)
- C#编程之经典算法——排序(一)
- C#编程之经典算法——排序(二)
- C#编程之经典算法——排序(三)
- C#编程之经典算法——排序(四)
- C#编程之经典算法——排序(六)
- C#编程之经典算法——排序(七)
- C#编程之经典算法——排序(八)
- C#编程之经典算法——排序(九)
- C#编程之经典算法——排序(十)
- C#编程之经典算法——排序(十一)
- C#编程之经典算法——排序(十二)
- 经典排序算法之实现(五)
- C#编程之经典算法——查找(一)
- C#编程之经典算法——查找(二)
- C#编程之经典算法——查找(三)
- C#编程之经典算法——查找(四)
- [转]理解C#值类型与引用类型
- 台式机gnome-mplayer出错解决
- 2011/05/30 robotium程序中调用browser的方法
- 台式机gnome-mplayer出错解决
- DBCC DBREINDEX重建索引提高SQL Server性能
- C#编程之经典算法——排序(五)
- iterator和增强型的for用法
- 回调函数浅谈
- 手机号更换后需要注意的问题
- HDU 1010-Tempter of the Bone
- TC执行过程解析
- 还是minicom好用
- C#去噪用于验证码图片识别的类续
- 汇编发音程序