快速排序
2015-06-02 10:42
162 查看
基本思想:选择一个基准元素,通过一趟排序将待排的记录分割成两个独立的部分,其中一部分记录的值均比基准元素小,另一部分均比基准元素值大。然后分别对这两部分用同样的方法进行排序。
代码如下:
快速排序是通常被认为在同数量级(O(nlog2n))的排序方法中平均性能最好的。
代码如下:
void Qsort(int a[],int low,int high) { if(low<high) { int mid=Partition(a,low,high); Qsort(a,low,mid-1);//对低子表进行递归排序 Qsort(a,mid+1,high);//对高子表进行递归排序 } } int Partition(int a[],int low,int high) { a[0]=a[low];//用子表的第一个记录作枢纽轴的记录 int key=a[low];//枢纽记录关键字 while(low<high)//从表的两端交替的向中间扫描 { while(low<high&&a[low]<=key) ++low; a[high]=a[low];//将比枢纽记录大的记录移动到高端 while(low<high&&a[high]>=key)--high; a[low]=a[high];//将比枢纽记录小的记录移动到低端 } a[low]=a[0];//枢纽记录到位 return low; //返回枢纽位置 }
快速排序是通常被认为在同数量级(O(nlog2n))的排序方法中平均性能最好的。
相关文章推荐
- 年月日时分秒加星期的即时显示的JS
- UIKit 框架之UISearchController
- Graph database_neo4j 底层存储结构分析(6)
- HTTP
- JS倒计时源码
- curl get post 请求数据
- Java 并发编程框架(二)
- 概念题整理
- Android Framework框架
- ios基础之 透过页面跳转来认识 Strong 与 Weak
- Java for LeetCode 133 Clone Graph
- Graph database_neo4j 底层存储结构分析(5)
- C#自定义控件
- Leetcode Contains Duplicate I, II, III
- Spring Mvc工作原理
- 2016应该看的电影
- FileNameBatcher 批处理文件名
- Velocity语法大全
- 分布式MySQL数据库TDSQL架构分析
- 弹出层居中随鼠标滚动而滚动