Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: valen7valverde en 10 Mayo 2020, 00:35 am



Título: [C] Ordenamiento de datos en C
Publicado por: valen7valverde en 10 Mayo 2020, 00:35 am
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.

Código
  1.  
  2. void sortData(int *x, int length)
  3. {
  4.    printf("Empieza metodo burbuja\n");
  5.  
  6.    for (int j = 1; j < length; j++)
  7.    {
  8.        for (int i = 0; i < length - 1; i++)
  9.        {
  10.            int aux;
  11.            if (x[i] > x[i + 1])
  12.            {
  13.                aux = x[i];
  14.                x[i] = x[i + 1];
  15.                x[i + 1] = aux;
  16.            }
  17.        }
  18.    }
  19.  
  20.    printf("Acaba metodo burbuja\n");
  21. }
  22.  
  23.  


Título: Re: [C] Ordenamiento de datos en C
Publicado por: K-YreX en 10 Mayo 2020, 00:46 am
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).


Título: Re: [C] Ordenamiento de datos en C
Publicado por: valen7valverde en 11 Mayo 2020, 00:19 am
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