快速排序

快速排序

使用java实现快速排序

 public static void quickSort(int[] arr, int l, int r) {
        if (l >= r) {
            return;
        }
        int lift = l;
        int right = r;
        //选取比较的值,取需要排序的序列的第一个数作为基值
        int p = arr[l];
        //将比p大的放到右边,将比p小的放到左边
        while (l < r) {
            while (l < r && arr[r] >= p) {
                r--;
            }
            if (l < r) {
                arr[l] = arr[r];
            }
            //将这个比p小的放到左边
            while (l < r && arr[l] <= p) {
                l++;
            }
            if (l < r) {
                arr[r] = arr[l];
            }
            if (l >= r) {
                arr[l] = p;
            }
        }
        quickSort(arr, lift, l - 1);
        quickSort(arr, l + 1, right);
    }

如上快速排序的思想是,选取第一个数作为基准数,将比这个数大的数放到右边,将比这个数小的放到左边,这样就能将数分成两个子序列,并在子序列中继续挑选一个数,最终会成为一个从小到大的数组。


public static void quickSort(int[] arr, int l, int r) {
    if (l >= r) {
        return;
    }
    int lift = l;
    int right = r;
    //选取比较的值,取需要排序的序列的第一个数作为基值
    int p = arr[l];
    //将比p大的放到右边,将比p小的放到左边
    while (l < r) {
        while (l < r && arr[r] <= p) {
            r--;
        }
        if (l < r) {
            arr[l] = arr[r];
        }
        //将这个比p小的放到左边
        while (l < r && arr[l] >= p) {
            l++;
        }
        if (l < r) {
            arr[r] = arr[l];
        }
        if (l >= r) {
            arr[l] = p;
        }
    }
    quickSort(arr, lift, l - 1);
    quickSort(arr, l + 1, right);
}

改变两个排序即可将数组变成从大到小排序

posted @ 2023-10-05 22:36  小小少年w  阅读(17)  评论(0)    收藏  举报