洛 谷 -P1177 【Plantilla】 Clasificación rápida

洛 谷 -P1177 【Plantilla】 Clasificación rápida

Enlace del título original: https://www.luogu.com.cn/problem/P1177


Descripción del título

Use el algoritmo de ordenación rápida para ordenar los N números leídos de pequeño a grande y de salida.

La clasificación rápida es uno de los algoritmos necesarios para las competiciones informáticas. Los estudiantes que no están familiarizados con la clasificación rápida pueden verificar la información relevante en línea y completarla de forma independiente después de dominar. (C ++ jugadores no intentan uso STL, aunque se puede usar sortuna y otra vez, pero no captan la esencia de la clasificación rápida algoritmo.)

Formato de entrada

Los primeros actos de un número entero positivo de N, la segunda línea contiene n enteros positivos separados por un espacio \ (a_i \) , que necesitan solucionar de número, para asegurar que los datos \ (A_i \) no excede \ (10 ^ 9 \ ) .

Formato de salida

Emite los N números dados de pequeño a grande, separados por espacios, y ajusta al final de la línea sin espacios.

Muestra de entrada y salida

Ingrese # 1

5
4 2 4 5 1
Salida n. ° 1
1 2 4 4 5

Instrucciones / Consejos

Para el 20% de los datos, hay \ (N \ leq 10 ^ 3 \) ;

Para 100% de datos, hay \ (N \ leq 10 ^ 5 \) .

Código C ++

#include <iostream>
using namespace std;

void quickSort(int a[], int l, int r) {
    int i=l,j=r,mid=a[(l+r)/2];
    while(i<=j) {
        while(a[i]<mid) i++;
        while(a[j]>mid) --j;
        if(i<=j)
            swap(a[i++],a[j--]);
    }
    if(l<j) quickSort(a,l,j);
    if(i<r) quickSort(a,i,r);
}

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

Supongo que te gusta

Origin www.cnblogs.com/yuzec/p/12749642.html
Recomendado
Clasificación