Documente Academic
Documente Profesional
Documente Cultură
Herman Schinca
Clase 17
24 de Mayo de 2011
Orden: ingredientes
Un tipo de dato
(int, char, float, bool)
+
Una relacion de orden sobre ese tipo
(menor, mayor, ms lindo, R(x,y))
Ordenando arreglos
Problema:
Tengo un arreglo de nmeros enteros y los quiero
ordenar siguiendo algn criterio. Por ejemplo, de
menor a mayor.
Ideas?
Vago Sort
Bogo Sort
Me fijo si ya est ordenado.
Si lo est, genial.
Sino, lo mezclo al azar y vuelvo a empezar.
Termina?Es un buen algoritmo?
Qu significa que sea bueno?
Cul es la moral de los algoritmos?
3 Ejes
A la hora de pensar un algoritmo debo tener en
cuenta (al menos) 3 cuestiones imprescindibles:
1. Terminacin
2. Correctitud
3. Complejidad/Eficiencia
Hay diversas tcnicas particulares pero, en
general, se trata de problemas no decidibles!
3 Ejes
En la materia no veremos en profundidad dichas
tcnicas formales.
Sin embargo, es una buena prctica el pensar si
el algoritmo que tenemos en mente satisface
nuestras necesidades: termina, hace lo que
queremos que haga y puedo predecir su
rapidez.
Selection Sort
[5,4,2,1,3]
[1,4,2,5,3]
[1,2,4,5,3]
[1,2,3,5,4]
[1,2,3,4,5]
Fin
Termina?
Siempre?
Por qu?
2 op
1 op
2*(tam-1-i) op
(tam-1-i) op
(tam-1-i) op
3 op
Insertion Sort
[5,4,2,1,3]
[5,4,2,1,3]
[4,5,2,1,3]
[2,4,5,1,3]
[1,2,4,5,3]
[1,2,3,4,5]
Fin
Bubble Sort
[5,4,2,1,3]
[1,2,5,4,3]
[1,2,3,5,4]
[1,2,3,4,5]
[1,2,3,4,5]
Fin
Tomar tiempos
Antes de ejecutar la funcin que ordena:
unsigned long comienzo = clock();
Luego de la llamada:
unsigned long fin = clock();
Para mostrar la diferencia:
printf("t: %d\n",fin-comienzo);
Experimentos
Generar arreglos de 10, 100, 10000 y 100000
elementos.
Ordenados de menor a mayor; de mayor a menor;
desordenados.
Tomar tiempos para los 3 algoritmos y sacar
concluciones.
Experimentos: aleatoreidad
Experimentos: ms aleatoreidad
Optimizaciones
Desafo
Se tienen N pares, donde la primera componente
es un nmero y la segunda es un color (rojo, azul
y mbar). Adems, se encuentran ordenados
segn el nmero. Dar un algoritmo que los ordene
por color (segn rojo-azul-mbar) pero
manteniendo el orden entre los nmeros de un
mismo color. La cantidad de operaciones del
algoritmo debe ser del orden de N.
Justificar TODO!
Desafo: Ejemplo