八大排序-快速排序

本文介绍了一种高效的排序算法——快速排序。快速排序的时间复杂度为O(nlogn),通过选取基准值并利用双指针技术将数组分为两部分,递归地进行排序。文章详细解释了快速排序的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

快速排序(O(nlogn)):将数组第一个数当做基准数,定义两个指针分别指向待排序数组的左右两段,移动右边指针找到比基准数小的数停止,移动左边指针找到比基准数大的数停止,之后两个指针的值互换,继续寻找至两个指针重合,重合的数值和基准数互换。原第一个数到达正确位置,其左右进行递归快排。

 public static void quickSort(int[] arr,int left,int right){
        if(left >= right){
            return;
        }

        int base =arr[left];
        int i =left;
        int j =right;
        while(i!=j){
            while(arr[j] >=base && i<j){
                j--;
            }
            while(arr[i] <=base && i<j){
                i++;
            }
            int temp =arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
        arr[left]=arr[i];
        arr[i]=base;

        quickSort(arr,left,i-1);
        quickSort(arr,i+1,right);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值