快速排序

· · 算法·理论

快速排序模板

#include <iostream>
#define MAXN 5000001
using namespace std;

int a[MAXN], n;

void fsort(int l, int r)
{
    if(l >= r) return;
    int i = l, j = r;
    while(i < j)
    {
        while(a[j] >= a[l] && i < j) j--;
        while(a[i] <= a[l] && i < j) i++;
        swap(a[i], a[j]);
    }
    swap(a[l], a[i]);
    fsort(l, i-1);
    fsort(i+1, r);
}

int main()
{
    cin >> n;
    for(int x = 0; x < n; x++) cin >> a[x];
    fsort(0, n-1);
    for(int x = 0; x < n; x++) cout << a[x] << " ";
    cout << endl;
    return 0;
}

详细讲解:快速排序