快速排序
2017-04-02 17:15
169 查看
快速排序
原理不讲了,看过很多遍了最好和平均时间复杂度O(nlog2n),最坏是每次挑的哨兵都是最值(快速排序将不幸退化为冒泡排序)此时的时间复杂度O(n2)
空间复杂度最坏O(n) 最优及平均O(log2n)
不稳定(重复数据后往前)
import java.util.Arrays; /** * Created by xiaolong_ma on 2017/4/2. */ //堆排序 public class QuickSort { public static void main(String[] args) { int[] a={1,3,2,3,4}; quickSort(a,0,a.length-1); System.out.println(Arrays.toString(a)); } public static void quickSort(int[] array,int l,int r){ int flag=array[l]; //一般就是第一个array[0] int start=l; int end=r; if(start>=end) //...这句话千万别忘了!!! 递归的收敛条件啊!!! return; while (start<end){ //从右往左找到第一个小的(先)这个在前面主要是因为要和flag换的话,只能换小的啊,start在前面就把大的换过去了 while (array[end]>=flag&&start<end) end--; //从左往右找到第一个大的 while (array[start]<=flag&&start<end) start++; //swap if(start<end){ int temp = array[end]; array[end]=array[start]; array[start]=temp; } } //最后start=end的时候 array[l]=array[start]; array[start]=flag; quickSort(array,l,start-1); quickSort(array,start+1,r); } }
相关文章推荐
- python 3.2 实现快速排序 源代码
- 【算法设计-快速排序】随机快速排序算法
- 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)
- 快速排序的一种Java实现
- 快速排序
- (排序)快速排序QuickSort
- 堆排序,快速选择排序,快速选择排序,归并排序的c++实现
- 排序5:快速排序
- 快速排序
- 用纯C语言实现快速排序,分递归调用法和非递归调用法。
- java实现直接出入、希尔、直接选择、快速排序
- 快速排序
- 【东东学数据结构】快速排序
- 快速排序
- 【算法】分治法(快速排序,归并排序)
- 一直快速排序的实现(摘自系统程序员成长计划)
- 快速排序
- 快速排序 详解
- python 实现插入排序,冒泡排序,快速排序,选择排序
- 排序-快速排序-优化-基准值选择待排序数组的三个等距取样的中位数