基本排序算法及分析(四):快速排序
2009-04-22 16:56
387 查看
摘要: 快速排序:确定一个枢纽元,一次遍历后将数组划分成两个部分,第一部分均比枢纽元小,第二部分都比枢纽元大,然后对这两个数组进行快速排序,是一种递归的方法
平均运行时间O(Nlog(N)),最坏运行时间O(N^2)
最坏情形:对于预排序的序列。
对与枢纽元相等的元素处理:
i,j都停止:会比较相等元素,但是可以划分成长度相当的两个子数组
i,j都不停止,不会比较相等元素,但是可能产生长度不平衡的两个子数组(与枢纽元相等的元素较多时)枢纽元的选取:
1. 选取第一个元素做枢纽元:对于(部分)预排序的序列运行时间O(N^2)
2. 随机生成枢纽元:能避免上述问题,但是产生枢纽元的代价高
3. 三数中值分割法:选取左端,右端,中间位置三个元素的中值 阅读全文
[align=right]幸运草 2009-04-22 16:56 发表评论[/align]
平均运行时间O(Nlog(N)),最坏运行时间O(N^2)
最坏情形:对于预排序的序列。
对与枢纽元相等的元素处理:
i,j都停止:会比较相等元素,但是可以划分成长度相当的两个子数组
i,j都不停止,不会比较相等元素,但是可能产生长度不平衡的两个子数组(与枢纽元相等的元素较多时)枢纽元的选取:
1. 选取第一个元素做枢纽元:对于(部分)预排序的序列运行时间O(N^2)
2. 随机生成枢纽元:能避免上述问题,但是产生枢纽元的代价高
3. 三数中值分割法:选取左端,右端,中间位置三个元素的中值 阅读全文
[align=right]幸运草 2009-04-22 16:56 发表评论[/align]
相关文章推荐
- MIT:算法导论——4.2快速排序 以及 排序算法时间复杂度分析
- 基本排序算法及分析(一):插入排序,直接选择排序
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
- 基本排序算法及分析(二):冒泡排序
- C语言实现基本排序算法----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- 基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)
- PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法的C++实现与性能分析(插入排序、归并排序、快速排序、STOOGE排序、堆排序)
- 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版
- 基本排序算法——快速排序java实现
- java基本排序算法-插入排序-快速排序-选择排序-冒泡排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 常用算法--基本排序算法(冒泡排序,选择排序,插入排序,快速排序,归并排序,桶排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 重温几种排序算法之希尔排序、归并排序、快速排序
- 快速排序详细分析
- C#中Array.Sort() 快速排序-源码分析