赞
踩
快速排序(Quick Sort)是一种高效的排序算法,由英国计算机科学家霍尔(C. A. R. Hoare)在1960年提出。它的基本思想是:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。以下是快速排序的主要知识点:
- public class QuickSort {
-
- public static void quickSort(int[] array, int left, int right) {
- if (left < right) {
- int pivotIndex = partition(array, left, right);
- quickSort(array, left, pivotIndex - 1);
- quickSort(array, pivotIndex + 1, right);
- }
- }
-
- private static int partition(int[] array, int left, int right) {
- int pivot = array[right]; // 通常选择最右侧的元素作为基准
- int i = left - 1; // i为小于基准元素的索引
-
- for (int j = left; j <= right - 1; j++) {
- if (array[j] <= pivot) {
- i++;
- // 交换array[i]和array[j]
- int temp = array[i];
- array[i] = array[j];
- array[j] = temp;
- }
- }
-
- // 将基准元素放到正确的位置
- int temp = array[i + 1];
- array[i + 1] = array[right];
- array[right] = temp;
-
- // 返回基准元素的索引
- return i + 1;
- }
-
- public static void main(String[] args) {
- int[] array = {3, 6, 8, 10, 1, 2, 1};
- quickSort(array, 0, array.length - 1);
-
- // 打印排序后的数组
- for (int num : array) {
- System.out.print(num + " ");
- }
- }
- }
在这个实现中,quickSort
方法是递归的主体部分,它调用 partition
方法来选择一个基准元素,并将数组分为两部分。partition
方法负责选择基准元素(这里选择的是最右侧的元素),并重新排列数组,使得小于基准的元素都在其左边,大于基准的元素都在其右边。然后,quickSort
方法递归地对基准元素左右两边的子数组进行排序。
在 main
方法中,我们创建了一个需要排序的数组,并调用了 quickSort
方法。最后,我们打印出排序后的数组。
注意,这个实现假设输入的数组 array
不会被其他线程修改,并且在排序过程中不会改变原数组(因为它是在原数组上进行原地排序的)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。