Algoritmos Flashcards
Algoritmos definición
Conjuntos de reglas que, aplicadas sistemáticamente a unos datos de entrada apropiados, resuelven un problema en un número finito de pasos elementales.
Diseño. Técnicas
-Divide y venderás (TOP-DOWN)
-Voraces (opción óptima en cada caso)
-Probabilísticos (MonteCarlos/Las Vegas)
-Backtracking (explora árbol de soluciones) - Fuerza bruta
-Ramificación y poda
-Programación dinámica (combinar subproblemas óptimos)
Análisis (complejidad espacial y temporal)
Algoritmos de búsqueda
Búsqueda secuencia. O(n).
Búsqueda binaria. O(log n). El arreglo debe estar ordenado y no se deben repetir los elementos.
Clasificación de algoritmos ordenación
Interno (memoria) / externo (fichero)
Natural. Tarda lo mismo si la entrada está ordenada
Estable. Mantiene el orden relativo original para claves iguales
Tipos de algoritmos de ordenación
-Exchange sorts: Burbuja/ QuickSort/ Cocktail
-Selection sorts: Selection/ HeapSort
-Insertion sorts: Insertion/ ShellSort
-Merge sort: Merge Sort
-Distribution sorts: Bucket Sort o BinSort/ Radix Sort
Burbuja
O (n^2)
Ω(n)
Vamos desplazando el nº máx grande que nos encontramos a base de comparaciones e intercambios entre elementos adyacentes
Inserción directa
O (n^2)
Ω(n)
1. Busca el lugar que le corresponde a Xi dentro del subarray que ya está ordenado.
2. Desplaza los elementos necesarios para hacerle hueco a Xi.
Selección
O (n^2)
1. Busca el mínimo y lo pones el 1º
2. Busca el siguiente mínimo y lo coloas el 2º
MergeSort
O(n log n)
1. Divide la lista en sublistas hasta llegar al caso trivial (recursivo)
2. Mezcla dos sublistas para tener una ordenada
QuickSort
O (n^2)
Ω(n log n)
1. Elegimos un elemento al que llamamos Pivote
2. Intercambiamos elementos menores de Xi y mayores de Xi
3. Misma operativa de forma recursiva
HeapSort/Montículo
O(n log n)
Consiste en meter todos los elementos del array en un montículo MAX y realizar N llamadas a eliminar_max
BucketSort / BinSort
O (n^2)
Ω (n+k)
1º Distribución inicial
2º Ordenar cada casillero
3º Concatenar casilleros
Radix Sort
O(n*k)
LSD: dígito menos significante
MSD: dígito más significante