M1 Algoritmos
M1 Algoritmos
Algoritmos
2 . 1
Algoritmos
2 . 2
Algoritmos
1. Resuelve un problema: Este es el objetivo principal del
algoritmo, fue diseñado para eso. Si no cumple el
objetivo, no sirve para nada :S.
2. Debe ser comprensible: El mejor algoritmo del mundo no
te va a servir si es demasiado complicado de
implementar.
3. Hacerlo e cientemente: No sólo queremos tener la
respuesta perfecta (o la más cercana), si no que también
queremos que lo haga usando la menor cantidad de
recursos posibles.
2 . 3
Algoritmos
2 . 4
Algoritmos
Ejemplo juego Adivinar un número:
N = 1/2x
log 2 (2x ) = log 2 N
2 2
x ∗ log (2) = log N
2
x ∗ 1 = log N
x = log 2 N
2 . 5
Algoritmos
Ahora... ¿Por qué nos importa medir la complejidad de los
algoritmos? Básicamente nos va a servir a:
2. Compararlos: Según el problema vamos a tener que decidir
cuál es el mejor algoritmo para usar, tampoco podemos
ponernos a probar uno por uno.
2 . 6
Cota superior asintótica ( Big O
Notation / Notación O grande )
2 . 7
Cota superior asintótica ( Big O
Notation / Notación O grande )
2 . 8
Cota superior asintótica ( Big O
Notation / Notación O grande )
2 . 9
Cota superior asintótica ( Big O
Notation / Notación O grande )
2 . 10
Ejemplos
2 . 11
Ejemplos
2 . 12
Ejemplos
1 function sumArray(array, n) {
2 var fin = array.length - 1;
3 var ini = 0;
4 while (ini < fin) {
5 var suma = array[ini] + array[fin];
6 if( suma === n) return true;
7 if( suma > n) fin = fin - 1;
8 if( suma < n) ini = ini + 1;
9 }
10 return false;
11 };
2 . 13
Medidas Comunes
2 . 14
Medidas Comunes
2 . 15
Qué cantidad de datos podría procesar
cada algoritmo en un segundo?
2 . 16
Algoritmos de
Ordenamiento I
3 . 1
Bubble Sort
3 . 2
Insertion Sort
3 . 3
Selection Sort
3 . 4
Algoritmos de
Ordenamiento II
4 . 1
Quick Sort
Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote.
Mover los demás elementos de la lista a cada lado del pivote, de manera que a un
lado queden todos los menores que él, y al otro los mayores. Los elementos iguales
La lista queda separada en dos sublistas, una formada por los elementos a la
Repetir este proceso de forma recursiva para cada sublista mientras éstas
contengan más de un elemento. Una vez terminado este proceso todos los
4 . 2
Quick Sort
4 . 3
Quick Sort
4 . 4
Merge Sort
4 . 5
Merge Sort
4 . 6
Merge Sort
Complejidad:
4 . 7