欢迎光临散文网 会员登陆 & 注册

一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基

2023-08-02 18:44 作者:养猪小熊手  | 我要投稿
public static void quickSort(int[] arr){
    if (arr == null||arr.length < 2) {
        return;
    }
    quickSort(arr,0,arr.length - 1);
}

// arr[1..r]排好序
public static void quickSort(int[] arr, int L, int R) {
    if (L < R) {
        swap(arr, L + (int) (Math.random() * (R - L + 1)), R);
        int[] p = partition(arr, L, R);
        quickSort(arr, L, p[0] - 1); //<区
        quickSort(arr, p[1] + 1, R); //>区
    }
}

public static int[] partition(int[] arr, int L, int R) {
    int less = L- 1; //<区右边界
    int more = R;//>区左边界
    while (L < more) { // L表示当前数的位置 arr[R]-> 划分值
        if (arr[L] < arr[R]) { // 当前数 < 划分值
            swap(arr, ++less, L++);
        } else if (arr[L] > arr[R]) {  // 当前数 > 划分值
            swap(arr, --more, L);
        } else{
            L++;
        }
    }
    swap(arr,more,R);
    return new int[] { less + 1, more };
}

public static void swap(int[] arr,int i,int j){
    int temp = arr[i];
    arr[i]  = arr[j];
    arr[j] = temp;
}


一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基的评论 (共 条)

分享到微博请遵守国家法律