快速排序的简单实现
来源:互联网 发布:中国国民收入数据库 编辑:程序博客网 时间:2024/04/30 12:37
快速排序为什么能快呢?
结合分治的策略,在快速排序中当挑出一个基准元素用来分成两部分即大于基准元素和小于基准元素。每次以这种效率分好,显而易见若我们取的基准每次都能恰好的是整个待排序元素的中心。
T(n)=T(n/2)+T(n/2)+O(n)
此递归解易得出 T(n)=O(nlgn)
而最差的情况下
T(n)=T(n-1)+T(0)+O(n)
此时T(n)=O(n^2)
很明显的差距,如何选好一个基准对于快排来说直接关乎其效率。
下面用最简单的方式实现一下快速排序,思想是一致的不同的只是选取基准元素的方式不一样,此处采取最简单的:每次固定取带排序的最后一个元素。
int partition(int *A,int p,int r) { int temp=A[r-1]; int i=p,j=p; for(;j<r-1;j++) { if(A[j]<temp) { swap(A[i],A[j]); i++; } } swap(A[i],A[r-1]); } void qsort(int *A,int p,int r) { if(p<r) { int q=partition(A,p,r); qsort(A,p,q-1); qsort(A,q+1,r); } }
若要是快速排序的效率增高的话,可以使用一个粗略的中位数的方式,即遍历一遍取个差不多中间的数或者直接取随机数也可以。
0 0
- 快速排序的简单实现
- 快速排序的简单实现
- 快速排序的简单实现
- 快速排序的简单实现
- 快速排序简单实现
- 快速排序简单实现
- 快速排序简单实现
- 快速排序简单实现
- 快速排序的一种简单实现
- java快速排序算法的简单实现
- 快速排序的简单实现(Quick_Sort)
- 快速排序的实现--简单程序
- 冒泡排序、插入排序、快速排序的简单实现
- 排序之快速排序的java语言简单实现
- 简单的快速排序
- 简单的快速排序
- 简单的快速排序
- 简单的快速排序
- U-boot 2014 启动流程详细分析
- Oracle笔记之序列
- WinForm 自定义窗体的拖动方法
- $(document).height()与$(window).height()
- Anonymous Classes
- 快速排序的简单实现
- 【HDU 3270】Cow Sorting
- 网络访问流程
- Linux C++ 使用condition实现阻塞队列
- 奇怪的分式
- 东软学习,sql工具类
- 合同如火如荼有态度与合同任何人
- uva 10288 - Coupons(概率)
- 2014腾讯实习校招