0% encontró este documento útil (0 votos)
25 vistas28 páginas

M1 Algoritmos

Cargado por

Ángel Gris
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
25 vistas28 páginas

M1 Algoritmos

Cargado por

Ángel Gris
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 28

1

Algoritmos

2 . 1
Algoritmos

Un algoritmo es un conjunto prescrito de


instrucciones o reglas bien de nidas,
ordenadas y nitas que permite realizar una
actividad mediante pasos sucesivos que no
generen dudas a quien deba realizar dicha
actividad. O sea, una serie de pasos a seguir
para completar una tarea.

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

¿Cómo medimos la e cienta del un


algoritmo?
 
Tiempo
Espacio
Otros recursos:
Red
Grá cos
Hardware (Impresoras, Cpus,
Sensores, etc...)

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:

1. Predecir el comportamiento: hay casos donde algo puede


tardar tanto que no tenemos el lujo del prueba y error,
tenemos que conocer de antemano si un algoritmo va a
terminar en un tiempo adecuado para el problema.

 
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

1 var max = array[0];


2 for( var i = 0, i <= array.lenght; i++){
3 if( array[i] > max) {
4 max = array[i];
5 }
6 }
7 console.log(max);
8 }; // O ( N )

2 . 11
Ejemplos

1 for( var i = 0, i <= array.lenght; i++){


2 for( var j = 0, j <= array.lenght; j++){
3 if(array[i] === array[j]){
4 return true;
5 }
6 }
7 };
8 // O( N x N) = O (n²)

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

al pivote pueden ser colocados tanto a su derecha como a su izquierda,

dependiendo de la implementación deseada. En este momento, el pivote ocupa

exactamente el lugar que le corresponderá en la lista ordenada.

La lista queda separada en dos sublistas, una formada por los elementos a la

izquierda del pivote, y otra por los elementos a su derecha.

Repetir este proceso de forma recursiva para cada sublista mientras éstas

contengan más de un elemento. Una vez terminado este proceso todos los

elementos estarán ordenados.

4 . 2
Quick Sort

4 . 3
Quick Sort

4 . 4
Merge Sort

1 - Divide el conjunto en dos grupos


iguales.

2 - Ordena recursivamente los dos


grupos

3 - Junta (o mergea) los grupos


ordenados.

4 . 5
Merge Sort

4 . 6
Merge Sort
Complejidad:

4 . 7

También podría gustarte