快速排序算法笔记
来源:互联网 发布:wamp php.ini配置文件 编辑:程序博客网 时间:2024/04/28 23:08
快速排序是一种基于分治思想的算法。它的基本思想如下:
首先选取一个轴/基准(pivot),接着根据选取的轴进行分区操作(Partition),分区操作的结果是使待排序序列中小于轴值的元素全部位于轴的左边,大于轴值的元素全部位于轴的右边;这样就将整个序列分成了两个子序列,而轴值已经位于正确的位置.然后对轴左右两边的子序列分别递归地进行快速排序,最终得到一个有序的序列。
主要伪代码如下:
void Qsort(ElementType *p,int low,int high){ int pivot_location; if(low<high) //需要排序的序列长度大于1 { pivot_location=Partition(p,low,high); //首先将待排序序列一分为二 Qsort(p,low,pivot_location-1); //对轴左边的子序列递归运行Qsort Qsort(p,pivot_location+1,high); //对轴右边的子序列递归运行Qsort }}int Partition(ElementType *p,int low,int high) //{ ElementType pivotkey; pivotkey=p[low]; //用子序列的第一个元素作为轴 while(low<high) { while(low<high && p[high]>=pivotkey) //从右往左寻找第一个小于轴的元素 --high; p[high] <-> p[low]; //与轴交换 while(low<high && p[low]<=pivotkey) //从左往右寻找第一个大于轴的元素 ++low; p[low] <-> p[high]; //与轴交换,此时,轴重新回到low位置 } return low; //返回轴所在的位置}
算法的平均时间复杂度:O(n logn),最坏情况下是:O(n2).具体的计算方法可以参考维基百科:http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F
- 快速排序算法笔记
- 快速排序算法笔记
- 快速排序算法笔记
- 算法笔记--快速排序
- 快速排序算法笔记
- 算法学习笔记----快速排序
- 算法学习笔记----快速排序
- 算法笔记之快速排序
- 快速排序算法学习笔记
- 快速排序算法学习笔记
- 快速排序算法思路笔记
- 排序算法之快速排序笔记
- 排序算法笔记-快速排序 Quicksort
- Java学习笔记排序算法-----------快速排序
- 算法学习笔记--排序之快速排序
- [笔记]算法复习笔记---排序算法(快速排序)
- 算法导论学习笔记(一)排序算法之快速排序
- 算法导论笔记之快速排序
- KMP算法笔记
- C语言中的 stdarg - variable argument lists
- windows 常见数据类型_常量的命名规律
- 硬盘只剩下一个大分区数据恢复图文教程
- ubuntu下安装JDK和netbeans
- 快速排序算法笔记
- android下C开发平台搭建-eclipse+SDK+NDK+cygwin
- Linux网络管理常用命令
- VS非控制台程序输出到控制台
- IP地址规划的重要性
- 子衿的事(65)
- 大三了,人生做的第一个决定,不知对与错》》
- Oracle存储过程使用动态SQL
- MediaCoder CUDA H.264 编码器测试报告