java快速排序代码实现

import java.util.Arrays;

public class QuickSorted {

    /**
     * 快速排序方法1
     *
     * @param arr
     * @param low
     * @param high
     */
    public void quickSort1(int arr[], int low, int high) {
        int start = low;
        int end = high;
        int key = arr[low];
        //退出机制, end=start,key被换到中间
        while (end > start) {
            while (end > start && arr[end] >= key) {
                end--;
                if (arr[end] <= key) {
                    swap(arr, start, end);
                    break;
                }
            }
            while (end > start && arr[start] <= key) {
                start++;
                if (arr[start] >= key) {
                    swap(arr, start, end);
                    break;
                }
            }
        }
        // 此时第一次循环比较结束,关键值的位置已经确定了。
        // 左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用
        if (start > low)
            quickSort1(arr, low, start);// 左边序列。第一个索引位置到关键值索引
        if (end < high)
            quickSort1(arr, end + 1, high);// 右边序列。从关键值索引+1到最后一个
    }


    /**
     * 交换数组内两个元素
     */
    public void swap(int[] array, int i, int j) {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

        // 测试
    public static void main(String[] args) {
        QuickSorted s = new QuickSorted();
        int[] arr = {11, 3, 29, 49, 30, 7, 50, 63, 46, 1, 99};
        System.out.println("未排序的数组:" + Arrays.toString(arr));
        s.quickSort1(arr, 0, arr.length - 1);
        System.out.println("排序后的数组:" + Arrays.toString(arr));
    }
}

 参考资料:

https://blog.csdn.net/qq_34801169/article/details/81412252 (链接内代码有bug,本文做了修改)

原文地址:https://www.cnblogs.com/but999/p/13526054.html