java实现的一个【快速排序 】算法【原创】
2023-09-11 14:17:56 时间
import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; public class Test { public static void main(String[] args) { int[] sortedArrays = quickSort(new int[]{3, 5, 1, 2}); System.out.println(ArrayUtils.toString(sortedArrays)); } /** * Run time is O(nlogn) * * @param source source array * @return sorted array */ private static int[] quickSort(int[] source) { int sourceSize = source.length; final byte baseLen = 2; // An array that is empty or contains only one element is ordered if (sourceSize < baseLen) { return source; } // pivot value int pivotVal = source[sourceSize / 2]; return combineList(quickSort(sortLeft(source, pivotVal)), pivotVal, quickSort(sortRight(source, pivotVal))); } private static int[] sortLeft(int[] source, int pivotVal) { return sort(source, pivotVal, true); } private static int[] sortRight(int[] source, int pivotVal) { return sort(source, pivotVal, false); } private static int[] sort(int[] source, int pivotVal, boolean isLeft) { int[] subArray = new int[source.length - 1]; int j = 0; for (int value : source) { boolean condition = isLeft && value < pivotVal || !isLeft && value > pivotVal; if (condition) { subArray[j++] = value; } } return Arrays.copyOf(subArray, j); } private static int[] combineList(int[] less, int pivotVal, int[] greater) { int[] a1 = ArrayUtils.add(less, pivotVal); return ArrayUtils.addAll(a1, greater); } }
相关文章
- Java实现 蓝桥杯 算法提高 分解质因数(暴力)
- Java实现 LeetCode 561 数组拆分 I(通过排序算法改写PS:难搞)
- Java实现 LeetCode 561 数组拆分 I(通过排序算法改写PS:难搞)
- Java实现蓝桥杯VIP算法训练 石子游戏
- Java实现高效便捷还容易懂的排序算法
- Java实现 蓝桥杯 算法提高 成绩排序
- Java实现 蓝桥杯VIP 算法提高 字符串比较
- Java实现 蓝桥杯VIP 算法提高 选择排序
- Java实现 蓝桥杯VIP 算法提高 身份证排序
- Java实现 蓝桥杯VIP 算法提高 P0401
- Java实现 蓝桥杯VIP 算法训练 ALGO-16进制转换
- Java实现蓝桥杯VIP 算法训练 找公倍数
- Java实现 蓝桥杯VIP 算法训练 二元函数
- Java实现 蓝桥杯 算法提高 新建Microsoft world文档
- Java实现 蓝桥杯 算法提高 01背包
- Java实现 蓝桥杯 算法提高 01背包
- Java实现 蓝桥杯 算法训练 排序
- Java实现 蓝桥杯 算法训练 字串统计
- Java实现 洛谷 多项式输出
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- JAVA算法系列 冒泡排序
- 浅入浅出 Java 排序算法
- java算法 -- 归并排序
- JAVA数组之选择排序算法
- 排序算法之归并排序(JAVA)
- java算法 -- 归并排序
- java算法 -- 希尔排序
- Java每日一练(20230328)
- Java排序算法--选择排序算法
- Java — java.lang.NullPointerException - 如何处理空指针异常