当前位置:首页 > Java

java如何快速排序

2026-03-22 07:51:08Java

快速排序实现方法

快速排序(QuickSort)是一种高效的分治算法,平均时间复杂度为 O(n log n)。以下是Java实现的核心步骤和代码示例。

java如何快速排序

核心逻辑

  1. 选择基准值(Pivot)
    从数组中选择一个元素作为基准值(通常选择第一个、最后一个或中间元素)。

    java如何快速排序

  2. 分区(Partitioning)
    将数组分为两部分:小于基准值的元素移到左侧,大于基准值的元素移到右侧。分区完成后,基准值处于正确的位置。

  3. 递归排序
    对左右子数组递归执行上述步骤,直到子数组长度为1或0。

Java代码实现

public class QuickSort {
    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); // 递归排序右子数组
        }
    }

    private 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;            // 返回基准值索引
    }

    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {10, 7, 8, 9, 1, 5};
        quickSort(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr)); // 输出排序后的数组
    }
}

关键点说明

  • 基准值选择:示例中选择数组末尾元素作为基准值,但可优化为随机选择或三数取中法以避免最坏情况(如数组已有序时时间复杂度退化为 O(n²))。
  • 分区优化:Lomuto分区方案(如上代码)简单但效率较低;Hoare分区方案(双指针法)通常性能更好。
  • 稳定性:快速排序是不稳定的排序算法,相同元素的相对位置可能改变。

时间复杂度分析

  • 最佳/平均情况O(n log n)
  • 最坏情况(如数组已有序):O(n²),可通过随机化基准值避免。

标签: 快速java
分享给朋友:

相关文章

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java中如何输入

java中如何输入

输入方法 在Java中,可以通过多种方式实现输入操作,具体取决于输入来源和需求。以下是几种常见的输入方法: 使用Scanner类 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…

react如何与java配合

react如何与java配合

React 与 Java 配合的常见方式 React 作为前端框架,通常与 Java 后端通过 RESTful API 或 GraphQL 进行交互。以下是几种常见的配合方式: RESTful AP…

百度如何快速搭建react项目

百度如何快速搭建react项目

使用官方脚手架 Create React App 通过官方推荐的 create-react-app 工具快速生成项目结构,无需配置构建工具(如 Webpack/Babel)。运行以下命令安装并初始化项…