快速排序算法和相关问题

public class 快速排序 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 333, 0, 2, -1, -1, 333333, 342532515};
        quickSort(arr, 0, arr.length - 1);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }

    private static void quickSort(int[] arr, int l, int r) {
        int low = l, high = r;
        if (low >= high) return;
        int tem = arr[low];
        while (low < high) {
            while (arr[high] > tem && low < high) high--;
            if (low < high) {
                arr[low] = arr[high];
                low++;
            }
            while (arr[low] < tem && low < high) low++;
            if (low < high) {
                arr[high] = arr[low];
                high--;
            }
        }
        //high == low, 说明high现在处于的位置右边是大于tem的,当前和左边是不大于tem的,直接将当前位置元素赋值:tem,
        //而且不用担心arr[high]被覆盖,因为arr[high]的值已经被拿走了
        arr[high] = tem;

        quickSort(arr, l, high - 1);
        quickSort(arr, high + 1, r);
    }
}

时间复杂度:
快速排序时间复杂度:O(nlgn),在已经有序情况下:O(n2)

什么是不稳定性?
不稳定就是指:在排序过程中,相同元素的相对位置发生改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值