java快排代码
javapublic 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 是数组的长度。