Métodos de ordenamiento

Métodos de ordenamiento (artículo)


Métodos de ordenamiento

Burbujeo

Código: ord1_Burbuja.c

Requiere archivo: getch.h

Métodos de ordenamiento

Inserción



    Inserto de a un elemento en un vector ordenado (como cuando se ordenan cartas).

Métodos de ordenamiento

Inserción

Código: ord2_Insercion.c

Requiere archivo: getch.h

Métodos de ordenamiento

Shell

    El Shell sort es una generalización del ordenamiento por inserción:
  • El ordenamiento por inserción es eficiente si la entrada está "casi ordenada".
  • El ordenamiento por inserción es tipicamente ineficiente por que mueve los valores uno a la vez.


Como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente N comparaciones e intercambios para mover cada valor hacia el otro extremo del vector.

Métodos de ordenamiento

Quicksort

Código: ord3_QuickSort.c

Requiere archivo: getch.h

Métodos de ordenamiento

Quicksort en la stdlib

man qsort

Código: qsort_stdlib_use.c

Notas: Es interesante ver la eficiencia de los algoritmos

Punteros a funcion

Sintaxis:


void (*func)()
int (*func)()
char (*func)()
...

Código ejemplo:




Nota: Estos ejemplos necesitan getch.h para compilar.

Punteros a función



Nos permiten:


  • Abstraer una función de otra: En el ejemplo de ordenamiento nos permiten que funcionen para cualquier tipo de dato pasandole a la función de ordenamiento la función de comparación, haciendola genérica y más flexible.

  • Que una selección tarde lo mismo para cada opción: Un switch es como una cadena de if anidados, para llegar al último debemos pasar por el primero. Un vector de punteros a función no tiene esta limitación, es más rápido y tarda lo mismo para todas las opciones.

Punteros a función

Ejemplos de uso adicionales


Usando punteros a funcion como un switch/case:




Nota: Estos ejemplos necesitan getch.h para compilar.

Material de referencia