ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
```java /** * 快速排序的改进方法-三向切分(可以参考荷兰国旗问题) * <pre> * 对于存在大量重复元素的数组,三向切分比常规快排高效得多。 * </pre> * * @param <T> * @param a * @param low * @param high */ public static <T extends Comparable> void quickSort3way(T[] a, int low, int high) { if (high <= low) { return; } int lt = low; int i = low + 1; int gt = high; T v = a[low]; while (i <= gt) { int cmp = a[i].compareTo(v); if (cmp < 0) { swap(a, lt++, i++); } else if (cmp > 0) { swap(a, i, gt--); } else { i++; } } quickSort(a, low, lt - 1); quickSort(a, gt + 1, high); } ```