Está en la página 1de 16

Convertir de árbol a listas ligadas

PASOs 1: Conectar nodos hermanos


PASO 2: Eliminar aristas de menor peso
PASO 3: Girar el árbol 45°
PASO 4: Hacer las listas ligadas

Nodos hoja: Numero de nodos que no tienen descendencia


Peso: Numero de nodos hoja
Altura: Nivel más alto + 1
Árbol simétrico: Tienen la misma cantidad de hijos
El nodo de mayor peso es el que está del lado izquierdo
Algoritmo Dijkstra

 El algoritmo de Dijkstra encuentra el camino más corto entre un nodo dado (el
nodo de origen) y todos los otros nodos del grafo.
 Este algoritmo usa los valores de los arcos para encontrar el camino que minimiza
el valor total entre el nodo de origen y los demás nodos del grafo. Este valor
depende de lo que representa el valor de los arcos en el grafo. Puede ser, por
ejemplo, tiempo, costo o distancia.
Método de inserción

PASOS
 Comenzar con una lista de elementos desordenados.
 Tomar el primer elemento de la lista y considerarlo como parte ordenada.
 Comparar el segundo elemento con el primero. Si el segundo elemento es menor,
intercambiarlos.
 Tomar el tercer elemento y compararlo con los elementos en la parte ordenada.
Insertar el tercer elemento en la posición correcta dentro de la parte ordenada,
desplazando los elementos mayores hacia la derecha.
 Repetir el paso anterior para cada elemento restante en la lista, insertándolos en la
posición correcta dentro de la parte ordenada.
 Continuar este proceso hasta que todos los elementos hayan sido insertados en la
parte ordenada y la lista esté completamente ordenada.
Método de SHELL

PASOS
 Comenzar con una lista de elementos desordenados.
 Seleccionar un valor de paso (gap). El gap es la distancia entre los elementos
que se van a comparar y ordenar en cada iteración.
 Dividir la lista en subgrupos de elementos separados por el gap seleccionado.
 Aplicar el algoritmo de inserción directa en cada subgrupo para ordenar los
elementos en ese subgrupo.
 Reducir el valor del gap y repetir los pasos 3 y 4 hasta que el gap sea 1.
 Ejecutar una última pasada de inserción directa en la lista completa con gap
igual a 1 para asegurar que todos los elementos estén en su posición correcta.
Método de quicksort

PASOS
 Elegir un elemento de la lista, al que llamaremos "pivote". La elección del pivote
puede variar según la implementación, pero comúnmente se selecciona el
elemento del medio.
 Dividir la lista en dos subconjuntos: los elementos más pequeños que el pivote y los
elementos más grandes que el pivote. Esto se conoce como particionar la lista.
 Recursivamente, aplicar los pasos 1 y 2 a cada uno de los subconjuntos generados
en el paso anterior. Esto implica elegir un nuevo pivote para cada subconjunto y
particionarlos nuevamente.
 El caso base de la recursión ocurre cuando un subconjunto tiene menos de dos
elementos, lo que significa que está ordenado por defecto.
 Combinar los subconjuntos ordenados para obtener la lista final ordenada.
Método de Merge sort

PASOS
 Dividir la lista no ordenada en dos mitades aproximadamente iguales.
 Aplicar recursivamente el Merge Sort a cada una de las mitades, dividiéndolas
aún más hasta que se alcance el caso base, es decir, hasta que las mitades
tengan un solo elemento (se consideran ordenadas por definición).
 Combinar las dos mitades ordenadas fusionando los elementos en un solo
conjunto ordenado. Este proceso de combinación se realiza utilizando un
procedimiento llamado "merge".
 Repetir los pasos 2 y 3 hasta que se hayan combinado todas las mitades y se
obtenga la lista final ordenada.
Método de heapsort

PASOS
 Construir un montículo máximo a partir de la lista desordenada. Un montículo
máximo es una estructura de datos en forma de árbol binario en la que cada nodo
padre es mayor o igual que sus hijos.
 Extraer el elemento máximo del montículo (que siempre estará en la raíz) y
colocarlo al final de la lista ordenada. Esto se hace intercambiando el elemento
máximo con el último elemento no ordenado.
 Reducir el tamaño del montículo en 1 (excluyendo el último elemento que se acaba
de colocar en la lista ordenada).
 Restaurar la propiedad del montículo máximo realizando un proceso llamado
"down-heapify" (también conocido como "hundir" o "hacer descender"). Esto
implica mover el nuevo elemento en la raíz del montículo a su posición correcta
dentro del montículo, de manera que vuelva a cumplirse la propiedad de montículo
máximo.
 Repetir los pasos 2 a 4 hasta que el montículo esté vacío.
 La lista resultante estará completamente ordenada de manera ascendente.
Arboles Binarios

 Nodo: Cada elemento individual en un árbol binario se conoce como nodo. Un


nodo puede contener un valor o una clave, y también puede tener referencias a
sus hijos izquierdo y derecho.
 Raíz: El nodo superior del árbol se llama raíz. Es el nodo desde el cual se inicia el
recorrido del árbol.
 Hoja: Los nodos que no tienen hijos se llaman hojas o nodos terminales. Son los
nodos finales en el árbol.
 Hijo izquierdo y hijo derecho: Cada nodo en un árbol binario puede tener a lo
sumo dos hijos. El hijo izquierdo es el hijo que se encuentra a la izquierda del
nodo actual, y el hijo derecho es el hijo que se encuentra a la derecha.
 Subárbol: Un subárbol es un árbol que se deriva de un nodo padre y todos sus
descendientes.
 Nivel: El nivel de un nodo se refiere a su distancia desde la raíz. El nivel de la raíz
es 0, el nivel de sus hijos directos es 1, y así sucesivamente.
 Altura: La altura de un árbol binario se refiere a la longitud del camino más largo
desde la raíz hasta una hoja. También se puede medir como la longitud del
camino más largo desde la raíz hasta cualquier nodo en el árbol.
 Recorrido de árbol: Los algoritmos de recorrido permiten visitar los nodos de un
árbol en un orden específico. Los recorridos comunes son: recorrido en orden
(in-order), recorrido en preorden (pre-order) y recorrido en postorden (post-
order).
Búsqueda binaria

 Comenzar con una lista ordenada en la que se busca un elemento específico.


 Establecer el índice del primer elemento (low) en 0 y el índice del último
elemento (high) en el tamaño de la lista menos 1.
 Mientras low sea menor o igual a high, repetir los siguientes pasos:
 Calcular el índice del elemento medio (mid) como la suma de low y high dividida
por 2, redondeando hacia abajo si es necesario (por ejemplo, mid = (low + high) //
2).
 Comparar el elemento buscado con el elemento en la posición mid de la lista.
 Si el elemento buscado es igual al elemento en la posición mid, se ha encontrado el
elemento y se puede retornar su posición (mid).
 Si el elemento buscado es menor que el elemento en la posición mid, actualizar
high a mid - 1 para buscar en la mitad inferior de la lista.
 Si el elemento buscado es mayor que el elemento en la posición mid, actualizar
low a mid + 1 para buscar en la mitad superior de la lista.
 Si el bucle termina y no se ha encontrado el elemento, significa que el elemento
no está en la lista y se puede retornar un valor especial (por ejemplo, -1) para
indicar la ausencia del elemento
Método Rápido

 Comienza recorriendo la lista de elementos a ordenar desde el principio.


 Compara cada par de elementos adyacentes. Si están en el orden incorrecto (es
decir, el elemento actual es mayor que el siguiente), intercámbialos.
 Continúa recorriendo la lista elemento por elemento, repitiendo el paso 2, hasta
llegar al final de la lista.
 Una vez que llegues al final de la lista en la primera pasada, el elemento más
grande estará en su posición correcta en el extremo derecho.
 Repite los pasos 1-4 para el resto de los elementos de la lista, pero esta vez
ignorando el último elemento en cada pasada, ya que ya está en su posición
correcta.
 Continúa realizando pasadas hasta que no se realicen intercambios en toda una
pasada, lo cual indica que la lista está ordenada.
Búsqueda Secuencial

 Comenzar desde el primer elemento de la lista.


 Comparar el elemento actual con el elemento buscado.
 Si el elemento actual es igual al elemento buscado, se ha encontrado y se
devuelve la posición actual.
 Si el elemento actual no es igual al elemento buscado, pasar al siguiente elemento
en la lista.
 Repetir los pasos 2 a 4 hasta que se encuentre el elemento buscado o hasta que se
recorra toda la lista.
 Si se recorre toda la lista y no se encuentra el elemento buscado, se devuelve un
valor especial (por ejemplo, -1) para indicar que el elemento no está presente en
la lista.
Bubble Sort para fusión de vectores

 Crea un vector vacío para almacenar la fusión de los dos vectores originales.
 Fusiona los dos vectores originales en un solo vector, agregando todos los
elementos del primer vector seguidos de todos los elementos del segundo vector.
 Realiza un bucle externo que itere n - 1 veces, donde n es la longitud del vector
fusionado. Este bucle controlará el número de pasadas necesarias para ordenar
completamente el vector.
 Dentro del bucle externo, realiza un bucle interno que itere desde el primer
elemento hasta el penúltimo elemento del vector.
 En el bucle interno, compara cada elemento con el siguiente elemento adyacente.
Si el elemento actual es mayor que el siguiente elemento, intercámbialos de
posición.
 Continúa iterando hasta el final del bucle interno.
 Después de cada pasada del bucle externo, el elemento más grande se colocará al
final del vector.
 Repite los pasos 4 a 7 hasta que se complete el bucle externo.
 Al finalizar, el vector estará completamente ordenado.
Radix sort

 Encuentra el valor máximo en la lista original.


 Determina el número de dígitos en el valor máximo. Esto se puede hacer
convirtiendo el valor máximo en una cadena y obteniendo su longitud, o mediante
el uso de logaritmos y redondeo hacia arriba.
 Inicializa una lista de contadores para cada dígito (0-9).
 Realiza un bucle para cada dígito, comenzando por el dígito menos significativo
hasta el dígito más significativo.
 En cada bucle, recorre la lista original y coloca cada elemento en el contador
correspondiente al dígito actual.
 Reconstruye la lista original tomando los elementos de los contadores en orden
secuencial.
 Repite los pasos 4-6 para cada dígito hasta que se hayan procesado todos los
dígitos.
 Al finalizar, la lista original estará completamente ordenada.
Bucket sort

 Determine el rango de los elementos en la lista original.


 Cree un número fijo de cubetas o baldes vacíos, igual al rango de elementos.
 Recorra la lista original y coloque cada elemento en la cubeta correspondiente
según su valor.
 Ordena cada cubeta individualmente utilizando otro algoritmo de ordenamiento
(por ejemplo, Insertion Sort).
 Concatena todas las cubetas en orden para obtener la lista final ordenada.
Couting sort

 Encuentra el valor máximo en la lista original.


 Crea una lista de contadores, inicializados en cero, con una longitud igual al valor
máximo más uno.
 Recorre la lista original y cuenta la frecuencia de cada elemento, incrementando el
contador correspondiente.
 Calcula las posiciones acumuladas de los contadores sumando cada contador con
el valor del contador anterior.
 Crea una lista de salida con la misma longitud que la lista original.
 Recorre la lista original en orden inverso y coloca cada elemento en la posición
correcta en la lista de salida utilizando los contadores acumulados.
 La lista de salida contendrá los elementos ordenados.
v
Método de selección

 Comenzar con una lista de elementos desordenados.


 Definir un índice llamado "índice del elemento mínimo" y establecerlo en 0.
 Recorrer la lista desde el índice 0 hasta el último elemento.
 Encontrar el elemento más pequeño en la porción de la lista desde el índice actual
hasta el final y guardar su índice.
 Intercambiar el elemento en el índice del elemento mínimo con el elemento en el
índice actual.
 Incrementar el índice del elemento mínimo en 1.
 Repetir los pasos 3-6 hasta que se haya recorrido toda la lista.

También podría gustarte