Академический Документы
Профессиональный Документы
Культура Документы
PROGRAMACIÓN
Clase 9
Ordenación y búsqueda
• Búsqueda
• Búsqueda secuencial
• Búsqueda binaria
Ordenación
• Muchos problemas de la vida real requiere que los datos
utilizados se encuentren en un determinado orden.
1 3 4 5 7
4 7 5 1 3
4 7 5 1 3
4 7 5 1 3
1 7 5 4 3
1 7 5 4 3
1 7 5 4 3
1 7 5 4 3
1 7 5 4 3
1 7 5 4 3
1 5 7 4 3
1 5 7 4 3
1 4 7 5 3
1 4 7 5 3
1 3 7 5 4
1 3 7 5 4
1 3 5 7 4
1 3 5 7 4
1 3 4 7 5
1 3 4 7 5
1 3 4 5 7
1 3 4 5 7
4 7 5 1 3
1 7 5 4 3
1 7 5 4 3
1 3 5 4 7
1 3 5 4 7
1 3 4 5 7
1 3 4 5 7
1 3 4 5 7
4 .
4 7 .
4 7 .
4 5 7 .
4 5 7 .
1 4 5 7 .
1 4 5 7
1 3 4 5 7
1 3 4 5 7
4 7 5 1 3
4 7 5 1 3
4 5 7 1 3
4 5 7 1 3
4 5 1 7 3
4 5 1 7 3
4 5 1 3 7
4 5 1 3 7
4 5 1 3 7
4 5 1 3 7
4 1 5 3 7
4 1 5 3 7
4 1 3 5 7
4 1 3 5 7
1 4 3 5 7
1 4 3 5 7
1 3 4 5 7
1 3 4 5 7
1 3 4 5 7
1 3 5 4 7
1 3 4 5 7
1 3 4 5 7
1 3 4 5 7
1 3 4 5 7
1 3 4 5 7
Pivote
3 9 1 5 4 6 2 7 8
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
3 9 1 5 4 6 2 7 8
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
3 9 1 5 4 6 2 7 8
Se intercambian ambos
elementos
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
3 2 1 5 4 6 9 7 8
Se intercambian ambos
elementos
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
3 2 1 5 4 6 9 7 8
Se
Se continúa con la
intercambian búsqueda.
ambos
Un índice se detiene en 5 que es mayor que el pivote.
elementos
El otro se detiene en el propio pivote
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
3 2 1 5 4 6 9 7 8
Se intercambian
intercambian ambos
ambos
Se
elementos
elementos
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
3 2 1 4 5 6 9 7 8
Se intercambian
intercambian ambos
ambos
Se
elementos
elementos
Ordenación Rápida (Quicksort)
• Lo logrado hasta ahora es tener: por un lado, en un
subconjunto todos los elementos menores que el pivote.
• Por otro lado todos los elementos mayores que el pivote.
3 2 1 4 5 6 9 7 8
Ordenación Rápida (Quicksort)
• Lo logrado hasta ahora es tener: por un lado, en un
subconjunto todos los elementos menores que el pivote.
• Por otro lado todos los elementos mayores que el pivote.
3 2 1 4 5 6 9 7 8
3 2 1 4 5 6 9 7 8
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
3 2 1 4 5 6 9 7 8
Se intercambian Se intercambian
ambos elementos ambos elementos
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
1 2 3 4 5 6 8 7 9
Se intercambian Se intercambian
ambos elementos ambos elementos
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
1 2 3 4 5 6 8 7 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
Ordenación Rápida (Quicksort)
• Se busca desde el comienzo del arreglo aquel elemento
más grande que el pivote.
• Se busca desde el fin del arreglo aquel elemento más
chico que el pivote
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
Caso base
Ordenación Rápida (Quicksort)
• Al ir volviendo de la recursión, el algoritmo hace la unión
de los arreglos junto con el elemento que eligió como
pivote.
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
primero = 0 1 2 3 4 5 6 7 8 9
ultimo = 8
central
(0+8)/2 = 4
La búsqueda comienza en la
mitad del arreglo
Búsqueda binaria
• Se desea saber si el valor 8 se encuentra en la colección
• Si primero es el índice más bajo a buscar y ultimo el más
alto, el índice central se calcula como:
• (primero + ultimo) / 2
primero = 0 1 2 3 4 5 6 7 8 9
ultimo = 8
central
(0+8)/2 = 4
primero = 5 1 2 3 4 5 6 7 8 9
ultimo = 8
central
(5+8)/2 = 6
primero = 5 1 2 3 4 5 6 7 8 9
ultimo = 8
central
(5+8)/2 = 6
primero = 7 1 2 3 4 5 6 7 8 9
ultimo = 8
central
(7+8)/2 = 7
1 2 3 4 5 6 7 8 9
primero = 0 1 2 3 4 5 6 7 8 9
ultimo = 8
central
(0+8)/2 = 4
La búsqueda comienza en la
mitad del arreglo
Búsqueda binaria
• Se desea saber si el valor 3.4 se encuentra en la
colección
• Si primero es el índice más bajo a buscar y ultimo el más
alto, el índice central se calcula como:
• (primero + ultimo) / 2
primero = 0 1 2 3 4 5 6 7 8 9
ultimo = 8
central
(0+8)/2 = 4
primero = 0 1 2 3 4 5 6 7 8 9
ultimo = 3
central
(0+3)/2 = 1
primero = 0 1 2 3 4 5 6 7 8 9
ultimo = 3
central
(0+3)/2 = 1
primero = 2 1 2 3 4 5 6 7 8 9
ultimo = 3
central
(2+3)/2 = 2
primero = 2 1 2 3 4 5 6 7 8 9
ultimo = 3
central
(2+3)/2 = 2
primero = 3 1 2 3 4 5 6 7 8 9
ultimo = 3
central
(3+3)/2 = 3
primero = 3 1 2 3 4 5 6 7 8 9
ultimo = 3
central
(3+3)/2 = 3
1 2 3 4 5 6 7 8 9