Java 快速排序算法实现详解及代码示例
快速排序(Quick Sort)是一种常用的排序算法,基本思想是选择一个基准元素,将小于基准元素的放在其左边,大于基准元素的放在其右边,然后再对左右两部分进行递归排序。
Java实现快速排序的代码如下:
public class QuickSort {
    public static void quickSort(int[] arr, int left, int right) {
        if (left < right) {
            int partitionIndex = partition(arr, left, right);
            quickSort(arr, left, partitionIndex - 1);
            quickSort(arr, partitionIndex + 1, right);
        }
    }
    private static int partition(int[] arr, int left, int right) {
        int pivot = arr[left];
        int i = left + 1;
        int j = right;
        while (i <= j) {
            while (i <= j && arr[i] <= pivot) {
                i++;
            }
            while (i <= j && arr[j] > pivot) {
                j--;
            }
            if (i < j) {
                swap(arr, i, j);
            }
        }
        swap(arr, left, j);
        return j;
    }
    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 = {5, 3, 8, 4, 2, 7, 1, 10, 6, 9};
        quickSort(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr));
    }
}
在上述代码中,quickSort方法实现了快速排序的主要逻辑。它接收三个参数:待排序数组arr、排序区间的左端点left和右端点right。如果left小于right,则选取arr[left]作为基准元素,并将数组划分为左右两部分,左边部分的元素都小于等于基准元素,右边部分的元素都大于基准元素。然后分别对左右两部分进行递归排序。partition方法实现了划分操作的逻辑,它接收三个参数:待排序数组arr、排序区间的左端点left和右端点right。在该方法中,首先选取arr[left]作为基准元素pivot,然后使用两个指针i和j分别指向左右两端。i从左往右移动,找到第一个大于pivot的元素,j从右往左移动,找到第一个小于等于pivot的元素,然后交换arr[i]和arr[j]。重复这个过程直到i大于j,将pivot放到arr[j]的位置上,然后返回j作为划分点的位置。swap方法用于交换两个元素的值。
在main方法中,我们创建一个测试数组,然后调用quickSort方法进行排序,并使用Arrays.toString方法打印排序后的结果。
原文地址: https://www.cveoy.top/t/topic/nsRu 著作权归作者所有。请勿转载和采集!