洛 谷 -P1177 【Plantilla】 Clasificación rápida
Enlace del título original: https://www.luogu.com.cn/problem/P1177
- Descripción del título
- Formato de entrada
- Formato de salida
- Muestra de entrada y salida
- Instrucciones / Consejos
- Código C ++
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 sort
una 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;
}