以下是使用Java进行快排的示例代码:

public class QuickSort {
    public static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
            int pivot = partition(arr, low, high);
            quickSort(arr, low, pivot - 1);
            quickSort(arr, pivot + 1, high);
        }
    }

    public static int partition(int[] arr, int low, int high) {
        int pivotValue = arr[low];
        int left = low + 1;
        int right = high;

        while (true) {
            while (left <= right && arr[left] < pivotValue) {
                left++;
            }

            while (left <= right && arr[right] >= pivotValue) {
                right--;
            }

            if (left > right) {
                break;
            }

            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
        }

        arr[low] = arr[right];
        arr[right] = pivotValue;

        return right;
    }

    public static void main(String[] args) {
        int[] arr = {5, 2, 8, 3, 1, 6, 9};
        quickSort(arr, 0, arr.length - 1);

        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
}

解释:

  • quickSort方法接收一个整数数组,以及数组的低位和高位索引值。如果低位索引小于高位索引,则进行以下操作:
    • 调用partition方法,获取枢轴元素的索引。
    • 对枢轴元素左侧和右侧的子数组分别递归调用quickSort方法。
  • partition方法接收一个整数数组,以及数组的低位和高位索引值。它选取数组的第一个元素作为枢轴元素,并使用双指针法将数组分为两部分。具体步骤如下:
    • 初始化leftright指针,分别指向数组的左右两端。
    • left指针小于等于right指针且指向的元素小于枢轴元素时,向右移动left指针。
    • left指针小于等于right指针且指向的元素大于等于枢轴元素时,向左移动right指针。
    • 如果left指针大于right指针,则跳出循环。
    • 交换leftright指针指向的元素。
    • 重复以上步骤,直到left指针大于right指针。
    • 将枢轴元素与right指针指向的元素交换位置。
    • 返回right指针的值。
  • main方法是一个示例,用于创建一个整数数组并调用quickSort方法对其进行排序。最后,它打印排序后的数组
使用Java 进行快排

原文地址: https://www.cveoy.top/t/topic/fb8c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录