java 三向切分的快速排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 三向切分的快速排序相关的知识,希望对你有一定的参考价值。
public class Quick3Way {
public static void sort(Comparable[] a) {
// 将所有元素随机排序
// List<Comparable> list = Arrays.asList(a);
// Collections.shuffle(list);
// a = list.toArray(new Comparable[0]);
// StdRandom.shuffle(a);
sort(a, 0, a.length - 1);
}
private static void sort(Comparable[] a, int low, int high) {
if (high <= low) {
return;
}
int lt = low, i = low + 1, gt = high;
Comparable v = a[low]; // 切分元素
while (i <= gt) {
int cmp = a[i].compareTo(v);
if (cmp < 0) {
// a[i]<v
exch(a, lt++, i++);
} else if (cmp > 0) {
// a[i]>v
exch(a, i, gt--);
} else {
i++;
}
}
sort(a, low, lt - 1);
sort(a, gt + 1, high);
}
private static void exch(Comparable[] a, int i, int j) {
Comparable t = a[i];
a[i] = a[j];
a[j] = t;
}
private static void show(Comparable[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
Integer[] a = {1, 3, 7, 7, 0, 5, 7, 1, 0, 5, 9};
sort(a);
show(a);
}
}
以上是关于java 三向切分的快速排序的主要内容,如果未能解决你的问题,请参考以下文章
Quick Sort(三向切分的快速排序)(Java)
小橙书阅读指南——快速排序和三向切分快速排序
快速排序算法原理及实现(单轴三向切分双轴)
《算法》笔记 5 - 快速排序
算法4 整理
快速排序优化