Hola, compañerxs.
Necesito ordenar unos datos dentro de un array de integer, de menor a mayor. Estoy usando el método burbuja pero el array es de 10⁶ de longitud, por lo que es super ineficiente. ¿Me recomendáis algun buen método para hacer de forma eficiente?
Dejo el código que estoy usando por aquí.
Gracias de antemano.
void sortData(int *x, int length)
{
printf("Empieza metodo burbuja\n");
for (int j = 1; j < length; j++)
{
for (int i = 0; i < length - 1; i++)
{
int aux;
if (x[i] > x[i + 1])
{
aux = x[i];
x[i] = x[i + 1];
x[i + 1] = aux;
}
}
}
printf("Acaba metodo burbuja\n");
}
Los algoritmos de ordenación más básicos son: Burbuja, Inserción y Selección. Los tres tienen un orden de eficiencia O(n2) pero son fáciles de implementar.
Si quieres algo más eficiente busca el algoritmo Quicksort o Mergesort (entre otros).
Gracias por la respuesta, YreX-DwX.
Sí, finalmente usé qsort. Quería implementarlo manualmente debido a que es un trabajo de la universidad, pero finalmente decidí usar el que viene en la librería y no complicarme demasiado.
Dejo el código en git-hub por aquí por si queréis echarle un vistazo y comentarme los fallos que tiene.
Saludos!
https://github.com/valen-developer/cobalt-decay-poisson-distribution/blob/master/ejer1.c