如何用Java编写快速排序算法

   2024-09-30 4430
核心提示:快速排序是一种高效的排序算法,它使用分治策略将一个数组分为两个较小的子数组,然后递归地对这些子数组进行排序public class Q

快速排序是一种高效的排序算法,它使用分治策略将一个数组分为两个较小的子数组,然后递归地对这些子数组进行排序

public class QuickSort {    public static void main(String[] args) {        int[] arr = {10, 7, 8, 9, 1, 5};        int n = arr.length;                System.out.println("原始数组:");        printArray(arr, n);        quickSort(arr, 0, n - 1);        System.out.println("\n排序后的数组:");        printArray(arr, n);    }    // 快速排序方法    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);        }    }    // 分区方法    static int partition(int[] arr, int low, int high) {        // 选择最后一个元素作为基准值        int pivot = arr[high];        // 小于等于基准值的元素的索引        int i = low - 1;        for (int j = low; j <= high - 1; j++) {            // 如果当前元素小于等于基准值,将其与i+1位置的元素交换            if (arr[j] <= pivot) {                i++;                swap(arr, i, j);            }        }        // 将基准值与i+1位置的元素交换        swap(arr, i + 1, high);        return i + 1;    }    // 交换数组中两个元素的位置    static void swap(int[] arr, int i, int j) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }    // 打印数组    static void printArray(int[] arr, int size) {        for (int i = 0; i< size; i++) {            System.out.print(arr[i] + " ");        }        System.out.println();    }}

在这个示例中,我们首先定义了一个名为quickSort的方法,该方法接受一个整数数组、一个低索引和一个高索引作为参数。我们在main方法中创建了一个整数数组,并调用quickSort方法对其进行排序。partition方法用于将数组划分为两个子数组,swap方法用于交换数组中的两个元素。最后,我们使用printArray方法打印原始数组和排序后的数组。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号