排序-快排

快排是一个递归的排序过程,每次递归,将当前序列的第一个元素当作中间值pivot(也可以选最右边或者随机),把比pivot小的放左边,比pivot大的放右边,再依次对左边的序列和右边的序列分别排序。 
vector<int> MySort(vector<int>& arr) {
        // write code here
        int n = arr.size();
        if(n < 2){
            return arr;
        }
        QuickSort(arr,0,n-1);
        return arr;
    }

    void QuickSort(vector<int>& arr, int l, int r){
        if(l >= r){
            return;
        }
        int pivot = arr[l];
        int lc = l,rc = r;
        while(lc < rc){
            while(lc < rc && arr[rc] > pivot){
                rc--;
            }
            if(lc < rc){
                arr[lc] = arr[rc];
                lc++;
            }
            while(lc < rc && arr[lc] <= pivot){
                lc++;
            }
            if(lc < rc){
                arr[rc] = arr[lc];
                rc--;
            }
        }
        arr[lc] = pivot;
        QuickSort(arr,l,lc-1);
        QuickSort(arr,lc+1,r);
    }
posted @   重新出发123  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示