[C] Ordenamiento de datos en C

Iniciado por valen7valverde, 10 Mayo 2020, 00:35 AM

0 Miembros y 1 Visitante están viendo este tema.

valen7valverde

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");
}


K-YreX

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).
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

valen7valverde

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