Este documento trata sobre algoritmos de búsqueda y ordenamiento. Explica la búsqueda secuencial, la búsqueda binaria y tres algoritmos de ordenamiento: burbuja, selección e inserción. También analiza la eficiencia de estos algoritmos en términos del número de comparaciones requeridas, concluyendo que la búsqueda binaria es más eficiente que la secuencial al requerir O(log n) comparaciones en el peor caso.
1. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
B´usquedas y Ordenamientos
Docentes de Programaci´on
Editado por Angel V´azquez-Pati˜no
angel.vazquezp@ucuenca.edu.ec
Departamento de Ciencias de la Computaci´on
Universidad de Cuenca
19 de septiembre de 2017
1 / 53
2. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Objetivos
1. Entender los algoritmos de b´usqueda
2. Entender los algoritmos de ordenamiento
3. Conocer el concepto de eficiencia
4. Tener una idea intuitiva de la eficiencia de los
algoritmos estudiados
2 / 53
3. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Contenido
Algoritmos de b´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Algoritmos de ordenamiento
Utilidad
Clasificaci´on
Algoritmo de ordenamiento de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Ordenamiento de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Fuentes
3 / 53
4. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Utilidad I
Uno de los usos m´as frecuentes de los computadores
es la b´usqueda de informaci´on en estructuras de
datos. La eficiencia de la b´usqueda depende de si la
estructura est´a o no ordenada. E.g., diccionario
Tome un diccionario y b´usque la palabra mundo.
Para encontrarla, ir´a directamente a la secci´on de
palabras que comienzan con m. Luego buscar´a
tomando la siguiente letra de la palabra (u), luego
la n y as´ı sucesivamente. Esto lo puede hacer
porque el diccionario se encuentra ordenado
(b´usqueda binaria)
4 / 53
5. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Utilidad II
Si el diccionario no estuviera ordenado se podr´ıa
tambi´en buscar la palabra recorriendo cada una de
las hojas y revisando cada una de las palabras que
se encuentren en esa hoja. Esto tardar´ıa mucho m´as
(menos eficiencia)(b´usqueda secuencial)
Los tipos de b´usquedas a estudiar tienen semejanza
con los ejemplos dados
5 / 53
6. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
B´usqueda secuencial o lineal
1. Consiste en empezar desde el inicio del arreglo e ir a
trav´es de cada elemento hasta encontrar el valor
buscado o hasta llegar al final
2. El arreglo no requiere estar ordenado
B´usqueda secuencial en arreglos
1. V´ıdeo: https://youtu.be/W3ClRnYb0KM
6 / 53
8. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
B´usqueda binaria o dicot´omica I
Condiciones
1. La estructura debe estar ordenada (ascendente o
descendentemente)
2. Conocer el n´umero de elementos de la estructura
8 / 53
9. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
B´usqueda binaria o dicot´omica II
Algoritmo (orden ascendente)
1. Se compara el valor buscado con el valor localizado
al centro del arreglo
2. Si el valor buscado es localizado, se termina la
b´usqueda
3. Si el valor buscado es menor que el analizado,
repetir proceso en la mitad inferior, sino en la mitad
superior
4. El proceso de partir por la mitad la estructura se
repite hasta encontrar el valor o hasta que el
tama˜no de la estructura restante sea cero (i.e.,
valor no encontrado)
9 / 53
10. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
B´usqueda binaria o dicot´omica III
M´etodo de b´usqueda binaria
1. V´ıdeo 1: https://youtu.be/7qv1An90q2Q
2. V´ıdeo 2: https://youtu.be/7oa1qEPLFps
10 / 53
12. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ejercicios
Dado el conjunto de n´umeros 23, 12, 44, 9, 3, 8, 1,
7, 0, 2, 4, 55 indique el n´umero de comparaciones
que se deben hacer para encontrar el n´umero 1
utilizando b´usqueda secuencial.
Tome el conjunto de n´umeros dados y utilize la
b´usqueda binaria para encontrar el n´umero 1.
Indique el n´umero de comparaciones realizadas.
Revise los ejercicios propuestos en el documento de
Ejercicios B´asicos de Programaci´on.
12 / 53
15. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Eficiencia: b´usqueda secuencial
En el mejor caso se encontrar´a el valor en el primer
elemento.
En el peor caso se har´an n comparaciones.
El orden de complejidad en el peor caso ser´ıa O(n).
15 / 53
16. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Eficiencia: b´usqueda binaria I
En el mejor caso se encontrar´a el valor en el
elemento del medio (una comparaci´on).
Se har´a el an´alisis para el peor caso.
Inicialmente el n´umero de elementos a analizar es n.
Tras la primera divisi´on, el n´umero de elementos que
queda por analizar es, como mucho, n/2 (pues nos
hemos quedado con la mitad de elementos); tras la
segunda divisi´on, el n´umero de elementos que queda
ser´a, como mucho, n/4; y as´ı sucesivamente.
Por lo general, tras la divisi´on n´umero i, el n´umero
de elementos por analizar ser´a, como mucho,
n
2i
16 / 53
17. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Eficiencia: b´usqueda binaria II
El peor caso se da cuando el elemento a buscar no
se encuentra en el vector (es decir, cuando tras
dividir los elementos por analizar nos quedemos con
un n´umero menor a 1). Por lo tanto, el n´umero
m´aximo de divisiones a realizar es el menor n´umero
m tal que
n
2m
< 1
Transformando esta f´ormula a un logaritmo en base
2:
n < 2m
log2 n < m
es decir, que el n´umero m depende, no del tama˜no
n del arreglo, sino del logaritmo de dicho n.
17 / 53
18. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Eficiencia: b´usqueda binaria III
Es por esto que el algoritmo de b´usqueda binaria
tiene una complejidad de orden logar´ıtmico
O(log2n).
18 / 53
20. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmos de ordenamiento
Definition (Ordenamiento)
Reorganizar elementos de tal manera que cumplan con
un criterio establecido.
e1 < e2 < e3 . . . < en → Ascendente
e1 > e2 > e3 . . . > en → Descendente
20 / 53
21. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Utilidad
Los datos ordenados son f´aciles de encontrar, esto
implica menos operaciones y menos tiempo
(eficiencia).
Existen varios algoritmos de ordenamiento que,
dependiendo de la estrategia, servir´an en mayor o
menor grado para ordenar elementos.
Que un algoritmo sea ingenioso, en este contexto,
significa que ordena el conjunto desordenado con el
menor n´umero posible de comparaciones e
intercambios.
21 / 53
22. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Clasificaci´on de los algoritmos de
ordenamiento
De acuerdo a la memoria utilizada
Internos: cuando la memoria RAM es suficiente
para el procesamiento
Externos: cuando hace falta enviar cantidades de
informaci´on desde la memoria RAM a disco duro.
Esto puede repetirse varias veces
De acuerdo a la estrategia utilizada
B´asicos: burbuja, selecci´on e inserci´on
Eficientes: shell sort, quick sort, radix sort, merge
sort, heap sort, etc.
22 / 53
23. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja I
Idea
Tomar el elemento de mayor valor de un arreglo y
llevarlo al final (ordenamiento ascendente); y esto
repetirlo a todos los elementos
Porqu´e del nombre
Alguien se imagin´o que el elemento que se va
desplazando es como si una burbuja subiera desde el
fondo del agua
23 / 53
24. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja II
Estrategia
1. Recorrer el arreglo desde el elemento 0 con un
iterador i.
2. En cada paso preguntar si el elemento i+1 es menor
al elemento i (ordenamiento ascendente). Si es as´ı,
se intercambian los elementos.
3. As´ı, el elemento mayor quedar´a en el ´ındice mayor
4. Una vez que se llegue al ´ultimo elemento del
arreglo, se comienza de nuevo con el paso 1.
5. Se repite hasta que no haya ning´un intercambio de
elementos.
Algoritmo de burbuja
24 / 53
25. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja III
1. V´ıdeo: https://youtu.be/L3d48etbseY
Pseudoc´odigo
1: for i = 1 hasta n do
2: for j = 0 hasta n-i do
3: if arreglo[j] > arreglo[j+1] then
4: intercambiar(arreglo[j], arreglo[j+1]);
5: end if
6: end for
7: end for
25 / 53
27. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ejercicios
Usando el m´etodo de la burbuja, ordene
descendentemente el siguiente conjunto de
n´umeros: 9, 3, 8, 1, 7, 0, 2, 4. Indique el n´umero de
pasadas realizadas.
Usando el m´etodo de la burbuja, ordene
ascendentemente el siguiente conjunto de n´umeros:
8, 2, 99, 21, 45, 9, 23. Indique el n´umero de
pasadas realizadas.
Revise los ejercicios propuestos en el documento de
Ejercicios B´asicos de Programaci´on.
27 / 53
28. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de selecci´on I
Estrategia
1. Se busca el menor de todos los elementos y se le
ubica en la primera posici´on del arreglo.
2. Se busca el menor de entre los elementos que
quedan y se lo intercambia con el primer elemento
del arreglo que queda.
3. Se repite el proceso para todos los elementos del
arreglo.
Algoritmo de selecci´on
1. V´ıdeo 1: https://youtu.be/l0YwcUJB3vo
2. V´ıdeo 2: https://youtu.be/KCvr7eHXEHE
28 / 53
29. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de selecci´on II
Pseudoc´odigo
1: for i = 0 hasta n-2 do
2: m´ınimo = i;
3: for j = i+1 hasta n-1 do
4: if arreglo[j] < arreglo[m´ınimo] then
5: m´ınimo = j;
6: end if
7: end for
8: intercambiar(arreglo[i], arreglo[m´ınimo]);
9: end for
29 / 53
31. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ejercicios
1. Ordene, ascendentemente y descendentemente,
usando el algoritmo de selecci´on, el siguiente
conjunto de n´umeros: 6, 2, 11, 23, 1, 5, 4. Indique
el n´umero de pasadas realizadas.
2. Ordene, ascendentemente y descendentemente,
usando el algoritmo de selecci´on, el siguiente
conjunto de letras: K, M, S, C, E, W, P, Q . Indique
el n´umero de pasadas realizadas.
3. Revise los ejercicios propuestos en el documento de
Ejercicios B´asicos de Programaci´on.
31 / 53
32. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de inserci´on I
Estrategia
1. Se toma el primer elemento del arreglo como el
primer elemento de lo que llamaremos el arreglo
ordenado.
2. Se toma el pr´oximo n´umero del arreglo y se
compara con los elementos del arreglo ordenado,
hasta encontrar su posici´on.
3. Se repite el proceso para todos los elementos del
arreglo.
Algoritmo de inserci´on
32 / 53
33. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de inserci´on II
1. V´ıdeo 1: https://youtu.be/5kVQ8kf52K4
2. V´ıdeo 2: https://youtu.be/a7g7Z5dMdgQ
Pseudoc´odigo
1: for i = 1 hasta n-1 do
2: j = i;
3: while j > 0 and arreglo[j-1] > arreglo[j] do
4: intercambiar(arreglo[j], arreglo[j-1]);
5: j = j-1;
6: end while
7: end for
33 / 53
35. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ejercicios
1. Ordene, ascendentemente y descendentemente,
usando inserci´on, el siguiente conjunto de n´umeros:
8, 3, 2, 9, 10, 7, 1, 4, 5. Indique las pasadas
realizadas.
2. Ordene, ascendentemente y descendentemente,
usando inserci´on, el siguiente conjunto de letras: J,
M, A, E, W, Q, P, R, M, B,X. Indique el n´umero de
pasadas realizadas.
3. Revise los ejercicios propuestos en el documento de
Ejercicios B´asicos de Programaci´on.
35 / 53
38. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja I
Comparaciones
Para ordenar un arreglo de n elementos, el n´umero
de comparaciones siempre es:
c(n) = (n −1)+(n −2)+· · ·+2+1 =
n × (n − 1)
2
c(n) no depende del orden de los t´erminos, sino del
n´umero de t´erminos:
O(c(n)) = n2
Por lo tanto la cota ajustada asint´otica del n´umero
de comparaciones pertenece al orden de n cuadrado.
38 / 53
40. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja III
El n´umero de intercambios i(n), que hay que
realizar depende del orden de los t´erminos y
podemos diferenciar el mejor y peor caso.
Definition (mejor caso)
Si el arreglo est´a previamente ordenado.
Definition (peor caso)
Si el arreglo est´a previamente ordenado en orden inverso.
Se puede determinar una cota ajustada asint´otica
del n´umero de intercambios, dado que ´este
depender´a del orden del vector en cuesti´on.
O(i(n)) =?
40 / 53
41. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja: peor caso I
Si se pasa al algoritmo un arreglo ordenado en orden
inverso realizar´a un n´umero de comparaciones
c(n) =
n2
− n
2
y tendr´a que realizar un n´umero igual de intercambios
entre los t´erminos del arreglo, dado que en cada
comparaci´on los t´erminos estar´an desordenados, y se
realizar´a el intercambio.
i(n) =
n2
− n
2
Por lo tanto en el caso m´as desfavorable tanto el n´umero
de comparaciones como el de intercambios coinciden:
41 / 53
42. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja: peor caso II
O(c(n)) = O(i(n)) = n2
El n´umero de comparaciones y de intercambios, en el
peor caso, pertenece al orden de n cuadrado.
42 / 53
43. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja: mejor caso I
En el mejor caso el n´umero de comparaciones ser´a el
mismo que en cualquier otro caso:
Ω(c(n)) = n2
La cota inferior asint´otica del n´umero de comparaciones
pertenece al orden de n cuadrado, como en los dem´as
casos, pero en todas las comparaciones el orden es el
correcto y por tanto no se realiza ning´un intercambio:
i(n) = 0
Por lo tanto el coste de intercambios no depende de n, y
es constante:
Ω(i(n)) = 1
43 / 53
44. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Ordenamiento de burbuja: mejor caso II
A tener en cuenta
El ordenamiento de burbuja tiene una complejidad
Ω(n2
) igual que el algoritmo de selecci´on.
Cuando un arreglo ya est´a ordenado, a diferencia
del algoritmo de inserci´on, que pasar´a por el arreglo
una vez y encontrar´a que no hay necesidad de
intercambiar las posiciones de los elementos, el
ordenamiento de burbuja est´a forzado a pasar por
dichas comparaciones, esto hace que su complejidad
sea cuadr´atica, incluso en el mejor de los casos.
El ordenamiento de burbuja se cataloga como el
algoritmo m´as ineficiente que existe.
44 / 53
45. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de selecci´on I
Comparaciones
Para ordenar un arreglo de n elementos, el n´umero
de comparaciones siempre es:
c(n) = (n −1)+(n −2)+· · ·+2+1 =
n × (n − 1)
2
c(n) no depende del orden de los t´erminos, sino del
n´umero de t´erminos.
O(c(n)) = n2
Por lo tanto la cota ajustada asint´otica del n´umero
de comparaciones pertenece al orden de n cuadrado.
45 / 53
46. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de selecci´on II
Intercambios
El n´umero de intercambios i(n) tambi´en es fijo.
T´engase en cuenta que la instrucci´on de
intercambio siempre se ejecuta.
i(n) = n
Definition (mejor caso)
Si el arreglo est´a previamente ordenado.
Definition (peor caso)
Si el arreglo est´a previamente ordenado en orden inverso.
46 / 53
47. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de selecci´on III
sea cual sea el arreglo, y el orden de sus elementos,
lo que implica en todos los casos un coste lineal:
O(i(n)) = n
la cota ajustada asint´otica del n´umero de
intercambios es lineal, del orden de n.
La f´ormula que representa el rendimiento del
algoritmo, viene dada por
c(n) =
n2
+ n
2
47 / 53
48. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de inserci´on I
Eficiencia
Depende del n´umero de comparaciones y del n´umero de
copias que el algoritmo requiere.
Comparaciones
En la primera pasada, se compara un m´aximo de un
´ıtem. En la segunda pasada, se compara un m´aximo
de dos ´ıtems, y as´ı hasta un m´aximo de n − 1
comparaciones en la ´ultima pasada. Esto es
1 + 2 + 3 + . . . + (n − 1) =
n × (n − 1)
2
48 / 53
49. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de inserci´on II
Sin embargo, ya que en cada pasada un promedio
de solamente la mitad del n´umero m´aximo de ´ıtems
son realmente comparados antes de que se
encuentre el punto de inserci´on, se puede dividir
este n´umero entre dos, lo que da
n × (n − 1)
4
N´umero de copias
49 / 53
50. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de inserci´on III
El n´umero de copias es aproximadamente el mismo
que el n´umero de comparaciones. Sin embargo, una
copia no consume tanto tiempo como un
intercambio, as´ı que para datos aleatorios este
algoritmo corre dos veces m´as r´apido que el
algoritmo de burbuja y m´as r´apido que el algoritmo
de selecci´on.
En cualquier caso, el algoritmo de inserci´on corre en
O(n2
) en tiempo para datos aleatorios.
50 / 53
51. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de inserci´on IV
Para datos que est´an ya ordenados o casi
ordenados, el algoritmo de inserci´on es mejor.
Cuando los datos est´an en orden, la condici´on en el
while nunca es verdadera, lo que ejecuta n-1 veces.
En este caso el algoritmo corre en O(n) en tiempo.
Si los datos est´an casi ordenados, el algoritmo corre
casi en O(n) en tiempo, lo que lo hace una manera
simple y eficiente para ordenar un archivo que est´a
s´olo un poco fuera de orden.
Sin embargo, para datos que est´an en orden inverso,
toda posible comparaci´on y desplazamiento se lleva
a cabo, as´ı que el algoritmo no corre m´as r´apido
que el algoritmo de burbuja.
51 / 53
52. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Algoritmo de inserci´on V
Revise eso utilizando la opci´on reverse-sorted en el
applet InsertSort Workshop
(http://cs.brynmawr.edu/Courses/cs206/
spring2004/lafore.html).
52 / 53
53. B´usquedas y
Ordenamientos
Angel
V´azquez-Pati˜no
B´usqueda
Utilidad
B´usqueda secuencial
B´usqueda binaria
Eficiencia
Ordenamiento
Utilidad
Clasificaci´on
Algoritmo de burbuja
Algoritmo de selecci´on
Algoritmo de inserci´on
Eficiencia
Burbuja
Selecci´on
Inserci´on
Fuentes
Fuentes
Libros
• Lafore, R., 2003. Data structures & algorithms in
Java, 2nd ed. Sams, Indianapolis, USA. Cap´ıtulos 2
y 3. (Disponible en la biblioteca)
• Deitel, P.J., Deitel, H.M., 2012. Java: How to
Program, 9th ed. Prentice Hall, Upper Saddle River,
N.J. Cap´ıtulo 19. (Disponible en la biblioteca)
53 / 53