Estructuras de datos

Algoritmos de ordenamiento

Merge Sort es un algoritmo de ordenamiento recursivo que se basa en un principio de dividir para ordenar y requiere de un par de funciones auxiliares:

  1. struct Nodo* dividir(struct Nodo* cabecera): Encuentra el nodo a la mitad de la lista, lo aterriza y regresa el apuntador al nodo que le seguía como cabecera de una nueva lista
  2. struct Nodo* intercalar(struct Nodo* primera, struct Nodo* segunda): Esta es una función recursiva que se encarga de intercalar ordenadamente dos listas y regresa un apuntador a la cabecera de la lista intercalada

Merge sort

La firma de la función para realizar este ordenamiento es:

struct Nodo* MergeSort(struct Nodo* cabecera)
 

Y el algoritmo es:

  1. Dividir la lista en dos mitades
    • El caso base es que la lista esté vacía o tenga sólo un elemento
  2. Llamar a la función MergeSort con la cabecera de la primera lista
  3. Llamar a la función MergeSort con la cabecera de la segunda lista
  4. Regresar el resultado de llamar a la función intercalar la primera lista con la segunda

Merge sort

Quick sort es otro algoritmo recursivo, y se basa en tomar algún elemento de la lista como pivote y ordenar el resto alrededor de este; requiere de dos* funciones auxiliares:

 

  1. struct Nodo* encuentraUltimo(struct Nodo* lista): encuentra el último nodo de la lista
  2. struct Nodo* dividir(struct Nodo* cabecera, struct Nodo* ultimo): Eilge como pivote al primer elemento de la lista, luego recorre la lista reordenando sus elementos - cualquier elemento menor que pivote se pasa a su izquierda, cualquiera mayor se pasa a su derecha. Regresa el apuntador al nodo pivote

Quick sort

La firma de la función para realizar este ordenamiento es:

void QuickSort(struct Nodo* cabecera, struct Nodo* ultimo)

 

Y el algoritmo es:

  1. El caso base es que la lista esté vacía o tenga sólo un elemento
  2. Llamar a la función dividir con la cabecera y el último nodo de la lista
  3. Llamar a la función QuickSort con la cabecera de la lista y su pivote
  4. Llamar a la función QuickSort con el elemento siguiente al pivote y al último nodo de la lista

Quick sort

Estructuras de datos: Algoritmos de ordenamiento

By Gilberto 🦁

Estructuras de datos: Algoritmos de ordenamiento

Algoritmos de ordenamiento

  • 100