一趟快排

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

int a[1000001];
void sqort(int a[], int l, int r)
{
    int i = l, j = r, key = a[l];

    if(l >= r)
    {
        return ;
    }

    while(i < j)
    {
        while(i < j && a[j] >= key)
        {
            j--;
        }

        a[i] = a[j];
        while(i < j && a[i] <= key)
        {
            i++;
        }
        a[j] = a[i];
    }
    a[i] = key;
}
int main(void)
{
    int n, i;
    while(~scanf("%d", &n))
    {
        for(i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }

        sqort(a, 0, n - 1);

        for(i = 0; i < n; i++)
        {
            printf("%d%c", a[i], i == n - 1?'\n':' ');
        }
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/Eider1998/article/details/85115868