/** * 快排(除null) * * @param array * @param <C> */public static <C extends Comparable> void sort(C[] array) { if (null == array) { return; } sort(array, 0, array.length - 1);}/** * 快排 * * @param array * @param start * @param end * @param <C> */private static <C extends Comparable> void sort(C[] array, int start, int end) { if (end - start < 1) { return; } select(array, start, end); C split = array[start]; int i = start; int j = end; while (i < j) { // 找到比split小的数 while (i < j && bigger(array[j], split)) { j--; } if (i < j) { array[i++] = array[j]; } // 找到比split大的数 while (i < j && smaller(array[i], split)) { i++; } if (i < j) { array[j--] = array[i]; } } array[i] = split; // 排序左边 sort(array, start, i - 1); // 排序右边 sort(array, i + 1, end);}/** * 选择策略 * * @param array * @param start * @param end * @param <C> */private static <C extends Comparable> void select(C[] array, int start, int end) { int mid = start + (end - start) / 2; if (smaller(array[start], array[mid])) { swap(array, start, mid); } else if (smaller(array[start], array[end])) { swap(array, start, end); }}/** * 交换值 * * @param array * @param a * @param b * @param <C> */private static <C extends Comparable> void swap(C[] array, int a, int b) { C t = array[a]; array[a] = array[b]; array[b] = t;}@SuppressWarnings("unchecked")public static <C extends Comparable> boolean bigger(C a, C b) { return a.compareTo(b) > 0;}@SuppressWarnings("unchecked")public static <C extends Comparable> boolean smaller(C a, C b) { return a.compareTo(b) < 0;} 继续阅读与本文标签相同的文章
上一篇 :
区块链开发公司为企业带来哪些商业机会
-
HyperLedger Fabric超级账本简介(5.2)
2026-05-25栏目: 教程
-
HyperLedger Fabric超级账本起源(5.1)
2026-05-25栏目: 教程
-
HyperLedger Fabric区块链开发平台(4.1)
2026-05-25栏目: 教程
-
HyperLedger Fabric区块链应用场景(3.1)
2026-05-25栏目: 教程
-
HyperLedger Fabric区块链工作过程(2.3)
2026-05-25栏目: 教程
