Java实现快速排序算法

大家好,我是锋哥。今天分享关于【Java实现快速排序算法】**面试题。**希望对大家有帮助;

Java实现快速排序算法

超硬核AI学习资料,现在永久免费了!

下面是一个用 Java 实现的快速排序算法:

复制代码
public class QuickSort {

    // 主方法
    public static void main(String[] args) {
        int[] arr = { 12, 7, 5, 14, 3, 8, 1, 9, 6, 11 };
        System.out.println("原数组:");
        printArray(arr);
        
        quickSort(arr, 0, arr.length - 1);
        
        System.out.println("排序后数组:");
        printArray(arr);
    }

    // 快速排序函数
    public static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            // 获取分区点
            int pivotIndex = partition(arr, low, high);
            
            // 对左右子数组递归排序
            quickSort(arr, low, pivotIndex - 1);
            quickSort(arr, pivotIndex + 1, high);
        }
    }

    // 分区函数,返回分区点的索引
    public static int partition(int[] arr, int low, int high) {
        // 选取最后一个元素作为基准元素
        int pivot = arr[high];
        
        int i = low - 1;  // i 是小于基准元素的元素的右边界

        // 遍历数组并进行交换
        for (int j = low; j < high; j++) {
            // 如果当前元素小于或等于基准元素,交换
            if (arr[j] <= pivot) {
                i++;
                swap(arr, i, j);
            }
        }
        
        // 最后将基准元素交换到正确的位置
        swap(arr, i + 1, high);
        
        return i + 1;
    }

    // 交换数组中的两个元素
    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    // 打印数组
    public static void printArray(int[] arr) {
        for (int num : arr) {
            System.out.print(num + " ");
        }
        System.out.println();
    }
}

说明:

  1. 快速排序的基本思路

    • 选择一个"基准"元素,将数组分为两部分,左边的元素比基准小,右边的元素比基准大。
    • 递归地对这两部分进行排序。
  2. partition():这个函数用来将数组按基准元素分区,并返回基准元素的最终位置。所有比基准小的元素会被放到基准的左边,所有比基准大的元素会被放到右边。

  3. quickSort() :这是递归函数,负责处理数组的子数组。在每次递归中,partition() 会选出一个基准元素,并对左右子数组继续进行递归排序。

  4. swap():交换数组中的两个元素。

运行该程序后,你会看到原数组和排序后的数组。