手写快排

#include <iostream>
#include<bits/stdc++.h>
using namespace std;



void quicksort(vector<int>&v,int l,int r)
{    if(l>=r)
     return ;
     int val=v[l];
     int ll=l,rr=r;
     while(ll<rr)
     {

        while(rr>ll&&v[rr]>=val) rr--;
            if(rr>ll)
            v[ll++]=v[rr];
        while(ll<rr&&v[ll]<val) ll++;
           if(rr>ll)
           v[rr--]=v[ll];
     }
     v[ll]=val;
     //cout<<l<<' '<<r<<endl;
     quicksort(v,l,ll-1);
     quicksort(v,ll+1,r);
}
int main()
{

    int n;
    cin>>n;
    vector<int> v;
    for(int i=1;i<=n;i++)
    {

        int x;
        cin>>x;
        v.push_back(x);
    }
    quicksort(v,0,n-1);
    for(int x:v)
    {

        cout<<x<<' ';
    }
    cout<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/acmLLF/p/14587827.html