Quick Sort 快速排序
0.前言
前面的文章分析了归并排序这个性能极高的排序算法,本文将继续分析另一个性能相当的排序算法——快速排序。快速排序还被誉为20世纪十大最佳算法之一。在Java编程中Arrays.sort(o),如果括号里的o是java基本类型,那么该API就会调用快速排序算法。
1.快速排序
原理
快速排序运用了递归的思想:
input:数组s
sort(数组s):
1.调用partition()将数组分成两部分
2.对左右两部分(递归地)调用sort()
partition():将数组以j-位置为界限分成两部分,j左边全部小于j-值,j右边全部大于j-值
代码实现
public class Quick{
//将数组分成两部分
private static int partition(Comparable[] a, int lo, int hi){
int i = lo, j = hi+1;
while (true){
while (less(a[++i], a[lo]))
if (i == hi) break;
while (less(a[lo], a[--j]))
if (j == lo) break;
if (i >= j) break;
exch(a, i, j);
}
exch(a, lo, j);
return j;
}
//外部排序方法
public