Вы находитесь на странице: 1из 16

Facultad de Ingeniera Electrnica

Sesin
Ordenacin, Bsqueda e Intercalacin

Algoritmo y Estructura de Datos II

Ing. Ral Jimenez Drago

Facultad de Ingeniera Electrnica

Esquemas sencillos de ordenacin


Hemos visto en sesiones anteriores como la bsqueda se puede realizar con ms eficiencia si los elementos estn ordenados. Si necesita buscar muchos datos en un mismo conjunto, vale la pena ordenar los elementos primero. Igual que para la bsqueda, la ordenacin se puede realizar sobre cualquier tipo de elementos, siempre que se puedan comparar (menor que).
Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Esquemas sencillos de ordenacin


Como la ordenacin es un problema importante, existen un gran nmero de algoritmos de ordenacin. Los algoritmos existentes se pueden utilizar en diferentes estructuras de datos (p.ej., un vector). Imponen diferentes tipos de requerimientos sobre los datos a ordenar. Tambin vara su eficiencia, tanto a nivel de memoria como a nivel de tiempo de ejecucin.
Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Esquemas sencillos de ordenacin


En general, los algoritmos ms eficientes son ms complejos y menos intuitivos. Los tres primeros (Burbuja, Insercin, y Seleccin) son muy sencillos, aunque no muy eficientes. Los otros dos (MergeSort y QuickSort) son tan eficientes como se puede esperar para un algoritmo de ordenacin, pero menos intuitivos.

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Algoritmo de la Burbuja: Bubble Sort


El algoritmo de ordenacin de la burbuja es uno de los ms fciles de recordar. Su nombre describe de manera intuitiva su funcionamiento. Imaginamos que los nmeros menores pesan menos y suben a la superficie como una burbuja. Se basa en el intercambio entre pares de items

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Algoritmo de la Burbuja: Bubble Sort


1 funcion Burbuja (V : vector de natural ; n : natural ) retorna vector de natural 2 variable i,j : natural ; 3 para i 1 hasta n-1 hacer 4 para j n hasta i+1 pasos 1 hacer 5 si (V[j] < V[j-1]) entonces 6 Intercambiar(V, j, j-1); 7 fsi 8 fpara 9 fpara 10 retorna V; 11 ffuncion 12 13 accion Intercambiar (V : vector de natural ; i,j : natural ) 14 variable aux : natural ; 15 aux V[i] ; 16 V[i] V[j] ; 17 V[j] aux ; 18 faccion
Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Algoritmo de la Burbuja: Animacin http://sziami.cs.bme.hu/~gsala/alg_anims/3/bsort-e.html http://www.cs.ubc.ca/spider/harrison/Java/ http://www2.hig.no/~algmet/animate.html

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Algoritmo de Insercin: Insertion Sort


Se basa en el mtodo seguido por los jugadores de cartas: Sec-destino (ordenada) Secuencia-Origen(por ordenar) V[1 . . . i-1] V[i . . . n] En cada paso tomamos el elemento V[i] y lo insertamos donde convenga de la secuencia destino. 44 55 12 42 94 18 6
i=2 i=3 i=4 i=5 i=6 i=7 i=8

67

44 55 12 44 55 12 42 44 55

para i=2 hasta n hacer insertar V[i] en V[1..i-1] fpara Para simplificar la insercin ampliamos el vector a V[0..n] para poner en v[0] el marcador o centinela que simplifique la bsqueda de la insercin. Insertar v[i] en v[0..i]: si v[i-1]<v[i] hacer intercambiar V[i] por v[i-1] sino terminar fsi

12 42 44 55 94
12 18 42 44 55 94 6 6 12 18 42 44 55 94 12 18 42 44 55 67 94

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Algoritmo de Insercin: Insertion Sort


1 funcion Insercion(V: vector de natural; n:natural) devuelve vector de natural 2 variable i,j : natural ; 3 V[0] MIN_INT; 4 para i 2 hasta n hacer 5 j i; 6 mientras (V[j] < V[j-1]) hacer 7 Intercambiar(V, j, j-1); 8 j j-1; 9 fmientras 10 fpara 11 devuelve V; 12 ffuncion 13 accion Intercambiar (V : vector de natural ; i,j : natural ) 14 variable aux : natural ; 15 aux V[i] ; 16 V[i] V[j] ; 17 V[j] aux ; 18 faccion

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Algoritmo de Insercin: Animacin

http://sziami.cs.bme.hu/~gsala/alg_anims/3/isort-e.html

http://www.cs.ubc.ca/spider/harrison/Java/ http://www.cs.hope.edu/~alganim/animator/Animator.html http://www2.hig.no/~algmet/animate.html

Algoritmo y Estructura de Datos II

Algoritmo de Seleccin: Selection Sort

Facultad de Ingeniera Electrnica

En cada paso seleccionamos el elemento de menor valor de los no ordenados y lo colocamos como primero de los no ordenados: seleccionamos-entre colocamos-en quedar-por-ordenar i=1 v[1..n] v[1] i=2 v[2..n] v[2] i=3 v[3..n] v[3] i=n-1 v[n-1..n] v[n-1] El ltimo ya queda ordenado! Para i=1 hasta n-1 hacer Asignar a k el menor valor de v[i..n] Intercambiar v[i] con v[k] fpara Idea opuesta a la de Insercin: Insercin: trabaja sobre los ya ordenados Seleccin: trabaja sobre los ya ordenados
Algoritmo y Estructura de Datos II

v[2..n] v[3..n] v[4..n] v[4..n]

Facultad de Ingeniera Electrnica

Algoritmo de Seleccin: Selection Sort


1 funcion Seleccion(V: vector de natural; n: natural) devuelve vector de natural 2 variable i,j,menor : natural ; 3 para i 1 hasta n - 1 hacer 4 menor i; 5 para j i + 1 hasta n hacer 6 si (V[j] < V[menor]) entonces 7 menor j; 8 fsi 9 fpara 10 Intercambiar(V, i, menor); 11 fpara 12 devuelve V; 13 ffuncion

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Algoritmo de Seleccin: Animacin http://sziami.cs.bme.hu/~gsala/alg_anims/3/ssort-e.html

http://www.cs.ubc.ca/spider/harrison/Java/
http://www2.hig.no/~algmet/animate.html

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Eficiencia de la ordenacin Cul es la eficiencia de los algoritmos sencillos de ordenacin? Una idea: contar el nmero de instrucciones que cada algoritmo realiza Hay que tomar en cuenta que las instrucciones dentro de un bucle mientras se repiten varias veces

Algoritmo y Estructura de Datos II

Facultad de Ingeniera Electrnica

Actividad Propuesta
Grupo Jueves
En grupos de 4, investigue y sustente lo siguiente: 1. 2. 3. 4. 5. 6. 7. Ordenamiento Shell (sort) (15) Ordenamiento Quicksort Ordenamiento por mezcla (merge) (17) Ordenamiento por Insercin(16) Bsqueda Secuencial (14.5) Bsqueda Binari(18.5) Bsqueda mediante transformacin de claves - Laureano, Reyes, Hinojoza (NS) - Casimiro (NR), Tame (15), Ruiz (17) - Bedon, Mendoza, La Torre - Borja, Vargas,Pacco - Alvarez, Prada, Chavez - Lopez, Agapito, Valencia, Ramirez - Cordova, More, Montes, Vargas S. (15.5)

Presente en diapositivas: Una breve descripcin del tema Un ejemplo desarrollado en pseudo cdigo Una aplicacin en web (opcional)

Valido para PC4

Algoritmo y Estructura de Datos II

Ing. Ral Jimenez Drago

Facultad de Ingeniera Electrnica

Actividad Propuesta
Grupo Sbado
En grupos de 2, investigue y sustente lo siguiente: 1. 2. 3. 4. 5. 6. 7. Ordenamiento Shell (sort) Castillo ., Oca Velasquez Ordenamiento Quicksort Medrano Ccaccya, Guillen Mendoza Ordenamiento por mezcla (merge) Diez C., Peralta Garcia Ordenamiento por Insercin Muante S., Zamora Y. Bsqueda Secuencial Rosas del M., Pfocco S. Bsqueda Binaria Huaman Q., Perez C. Bsqueda mediante transformacin de claves Huamani V.

Presente en diapositivas: Una breve descripcin del tema Un ejemplo desarrollado en pseudo cdigo Una aplicacin en web o video (opcional)

Valido para PC3

Algoritmo y Estructura de Datos II

Ing. Ral Jimenez Drago

Вам также может понравиться