Java排序算法(一)--快速排序(QuickSort)
2016-03-21 09:08
489 查看
快排是最重要,使用最多的一种排序方法,其思想应用在了很多其他的快速查找等算法里。
主要思想是:
1.把数组的第一个元素作为基准(pivot),将数组划分;
2.比较要查找的值与pivot的大小,确定在左半边还是右半边进行递归查找
public static void quickSort(int []d,int left,int right){ //left,right均为元素位置 int low =left -1; int high =right -1; int pivot =d [low ]; //将第一个元素作为pivot while(low <high ){ while(low <high &&d[high]>=pivot) high--; d[ low]= d[ high]; while(low <high &&d[low]<=pivot) low++; d[ high]= d[low]; } d[ low]= pivot; if(left <low ) quickSort (d ,left ,low); //对left和pivot值及左边)之间的元素递归调用快排 if(high+2< right) quickSort(d,high+2,right); //对pivot值右边)和right之间的元素递归调用快排 }
快排的平均时间复杂度为O(n*log2n)。快排不是一种稳定的排序方法。
分析方法(最好情况下):n+2*n/2+4*n/4+…+n*n/n=n(lgn+1)
相关文章推荐
- 类似于StringBuilder的字符串加强处理类
- 利用F#库canopy进行UI测试
- [LeetCode] Range Sum Query 2D - Mutable 二维区域和检索 - 可变
- Handler,Messgae,MessageQueue,Looper分析
- //var_dump(get_defined_constants(True));获取系统常量
- Uiautomator 2.0之UiDevice新增API学习小记
- Vue.js
- StringBuilder & StringBuffer
- 关于UIView的Alpha和NSDate的两个使用方法
- 【安卓】UI笔记
- QuiLoader 动态加载 QMainWindow
- Poj 2299 - Ultra-QuickSort 离散化,树状数组,逆序对
- QT 动态加载UI文件注意事项
- JSP局部刷新,子页面中的EasyUI失效问题解决
- IOS基础控件-UITableView
- IOS开发之UIView总结
- Servlet - Request、Session、servletContext区别
- java.sql.SQLException: No suitable driver found for jdbc
- apue- chapter 1 UNIX基础知识
- UITableView中的cell重用(原理)以及cell重用解决办法