JAVA快速排序学习

视频https://www.bilibili.com/video/BV1E8411e718

package com.horse;

import java.util.Arrays;

public class Sort {
    public static void main(String[] args) {
        int arr[] = {4, 1, 8, 2, 3, 11, 12, 0, 10, 6};
        System.out.println(Arrays.toString(arr));//打印排序前数组
        quick_sort(arr, 0, 9);
        System.out.println(Arrays.toString(arr));//打印排序后数组
    }

    //快速排序
    public static void quick_sort(int s[], int l, int r) {
        if (l < r) {
            int i = l, j = r, x = s[l];
            while (i < j) {
                while (i < j && s[j] >= x) {// 从右向左找第一个小于x的数
                    j--;
                }
                if (i < j)
                    s[i++] = s[j];

                while (i < j && s[i] < x) {// 从左向右找第一个大于等于x的数
                    i++;
                }
                if (i < j)
                    s[j--] = s[i];
            }
            s[i] = x;
            quick_sort(s, l, i - 1); // 递归调用
            quick_sort(s, i + 1, r);
        }
    }
}