java快排代码

java
public class QuickSort { public static void main(String[] args) { int[] array = {5, 2, 9, 1, 5, 6}; System.out.println("原始数组:"); printArray(array); quickSort(array, 0, array.length - 1); System.out.println("排序后数组:"); printArray(array); } public static void quickSort(int[] array, int low, int high) { if (low < high) { int partitionIndex = partition(array, low, high); // 递归排序分区 quickSort(array, low, partitionIndex - 1); quickSort(array, partitionIndex + 1, high); } } public static int partition(int[] array, int low, int high) { int pivot = array[high]; int i = low - 1; for (int j = low; j < high; j++) { if (array[j] < pivot) { i++; // 交换 array[i] 和 array[j] int temp = array[i]; array[i] = array[j]; array[j] = temp; } } // 交换 array[i+1] 和 array[high] int temp = array[i + 1]; array[i + 1] = array[high]; array[high] = temp; return i + 1; } public static void printArray(int[] array) { for (int num : array) { System.out.print(num + " "); } System.out.println(); } }

这是一个基本的快速排序实现,通过递归方式对数组进行分区和排序。在 quickSort 方法中,首先选择一个元素作为基准,然后将数组中小于基准的元素移到基准的左边,大于基准的元素移到基准的右边,最后将基准放在适当的位置。随后,对基准两侧的子数组进行递归排序。

main 方法中创建了一个示例数组,并打印原始数组。

quickSort 方法是快速排序的入口点。如果low小于high,它选择一个基准值,并调用 partition 方法来对数组进行分区。然后,递归地对分区的两侧子数组进行排序。

partition 方法负责实际的分区过程。它以数组的最后一个元素作为基准,通过遍历数组,将小于基准的元素放在基准的左边,大于基准的元素放在基准的右边。最后,将基准放在适当的位置,并返回基准的索引。

printArray 方法用于打印数组的元素。

选择基准值。将小于基准值的元素移到基准的左边,大于基准值的元素移到基准的右边。递归地对基准左侧和右侧的子数组进行排序。

这种排序算法的平均时间复杂度为O(n log n),其中 n 是数组的长度。

标签