Anda di halaman 1dari 13

Estructuras de Datos

Unidad 2. Ordenacin y bsqueda

Ingeniera en Desarrollo de software


Cuatrimestre 06

Asignatura:
Estructuras de Datos

Clave: 160920621/150920621

Programa de la unidad

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda

ndice
PRESENTACIN DE LA UNIDAD ............................................................................................ 3
PROPSITOS DE LA UNIDAD................................................................................................. 3
COMPETENCIA ESPECFICA .................................................................................................. 3
TEMARIO DE LA UNIDAD ........................................................................................................ 3
2. ORDENACIN Y BSQUEDA.............................................................................................. 4
2.1. MTODOS DE ORDENACIN .......................................................................................... 4
2.2. MTODOS DE BSQUEDA .............................................................................................. 9
CIERRE DE LA UNIDAD......................................................................................................... 12
PARA SABER MS ............................................................................................................. 13
FUENTES DE CONSULTA ..................................................................................................... 13

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Presentacin de la unidad
En esta segunda unidad conocers dos conceptos importantes acerca de ordenacin y
bsqueda de datos: Mtodos de ordenacin y Mtodos de bsqueda.
Los diferentes temas abordados en esta unidad tienen que ver con mtodos de ordenacin y
mtodos de datos, es decir, son temas que dan continuidad a los temas de la unidad anterior
que, como podrs recordar, son las diferentes estructuras de datos, sus algoritmos,
representacin as como los mtodos asociados a cada estructura en particular. Es decir, en la
primera unidad aprendiste a manejar las estructuras de datos y en esta unidad aprenders a
ordenar los datos y adems a realizar bsquedas.
A lo largo de la unidad, revisars textos, as como realizars actividades, de esta manera,
podrs ser capaz de realizar ejercicios de programacin donde apliques los distintos mtodos
de ordenacin y de bsqueda de datos. Los ejercicios de programacin estarn relacionados
con aplicaciones reales.

Propsitos de la unidad
Que el estudiante conozca y emplee los conceptos de bsqueda y ordenamiento de datos que
le permitan dar soluciones a problemticas.

Competencia especfica
Ejecutar los mtodos de bsqueda y ordenacin para mejorar los tiempos de ejecucin de
programas mediante los algoritmos de programacin.

Temario de la unidad
2. Ordenacin y bsqueda
2.1 Mtodos de ordenacin
2.1.1. Mtodo de la burbuja
2.1.2. Mtodo de insercin
2.1.3. Mtodo de seleccin
2.1.4. Mtodo quicksort
2.1 Mtodos de bsqueda
2.2.1. Bsqueda secuencial
2.2.2. Bsqueda binaria
2.2.3. Bsqueda por interpolacin

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
2. Ordenacin y bsqueda
Esta unidad es sumamente interesante, ya que en ella podrs conocer y aprender a utilizar los
diferentes mtodos, tanto de ordenacin como de bsqueda de datos. Cada uno de estos
mtodos se basa en un algoritmo, as mismo ofrece ventajas y desventajas contra los otros
mtodos existentes; es decir, t conocers diferentes opciones para ordenar y buscar datos;
pero, sers t quien decida que mtodo emplears, segn sea el caso y tu preferencia. En
esta unidad, podrs complementar los temas vistos en la unidad anterior; ya que, en las
estructuras de datos que aprendiste a utilizar, ahora podrs ordenar dichos datos y
posteriormente realizar bsquedas bajo ciertos criterios. Esto significa, que de nada servira
aprender slo el correcto almacenamiento de datos de forma estructurada si posteriormente no
se realizaran bsquedas de datos. Por ejemplo: es un desperdicio tener una excelente agenda
que almacene los datos de nuestros contactos o clientes, si posteriormente no puede buscar
datos de una forma ordenada o en orden alfabtico ascendente.

2.1. Mtodos de ordenacin


El primer tema que consideraremos es: mtodos de ordenacin. La ordenacin o clasificacin
de datos, es una operacin consistente en disponer un conjunto de datos en algn
determinado orden con respecto a uno de los campos de elementos del conjunto. La
ordenacin se conoce tambin como sort (por su traduccin al ingls). Por ejemplo, cada
elemento del conjunto de datos de una agenda telefnica, tiene: nombre, direccin y nmero
de telfono; adems de estos campos, podra tener otros como: correo electrnico. La gua
telefnica est organizada en orden alfabtico de nombres; los elementos numricos se
pueden ordenar en forma creciente o decreciente de acuerdo al valor numrico del elemento.

Figura. Agenda telefnica


Recuperado de: resiges.com
Hay muchos mtodos de ordenacin, por ello se debe prestar especial atencin en su
eleccin. Cmo saber cul es el mejor mtodo? La eficiencia es el factor que mide la calidad
y rendimiento de un mtodo. En el caso de la operacin de ordenacin, dos criterios se suelen
seguir a la hora de decidir qu mtodo de ordenacin es el ms eficiente: 1) tiempo menor de
ejecucin en computadora; 2) menor nmero de instrucciones.

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Existen diferentes mtodos de ordenacin de datos, entre los ms conocidos y utilizados
podemos mencionar mtodo de la burbuja (bubble sort, por su denominacin en ingls),
mtodo de insercin, mtodo de seleccin y el mtodo de ordenacin rpida (quicksort
por su denominacin en ingls).
Para ampliar tu conocimiento acerca de los diferentes mtodos tanto de ordenacin como de
bsqueda, consulta a Joyanes/Zahonero, (2012. pp. 430 - 451), revisa los diferentes
ejemplos que ilustran estos mtodos.
Mtodo de Brbuja
Este mtodo funciona revisando cada elemento, de la lista de elementos que va a ser
ordenada, con el siguiente elemento; luego, intercambian su posicin, si estn en un orden
inadecuado. Es necesario revisar varias veces toda la lista hasta que no se necesiten ms
intercambios, lo cual significa que la lista est ordenada. Este mtodo toma su nombre de la
forma con la que suben los elementos durante los intercambios, como si fueran pequeas
"burbujas". Tambin es conocido como el mtodo del intercambio directo; esto, debido a
que slo usa comparaciones para operar elementos; es considerado un mtodo de
comparacin, siendo el ms sencillo de implementar, aunque desafortunadamente no es muy
eficiente. En Joyanes/Zahonero (2012, pp. 438 - 442) puedes consultar de forma ms amplia
este algoritmo, al que tambin se le conoce como ordenacin por hundimiento debido al
parecido entre las burbujas del agua que se van al fondo del recipiente que las contiene.

Figura. Mtodo de la burbuja. Recuperado de: um.es

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Mtodo de insercin
Este mtodo es similar al proceso tpico de ordenar tarjetas de nombres (cartas de una baraja)
por orden alfabtico, que consiste en insertar un nombre en su posicin correcta dentro de una
lista o archivo que ya est ordenado.
En Joyanes, (2010, pp. 368-370) consulta diferentes ejemplos que ilustran este mtodo de
ordenacin, as mismo encontrars algunos pseudocdigos y diagramas de flujo que explican
dicho mtodo.
El algoritmo correspondiente a la ordenacin por insercin consta de los siguientes pasos:
1. El primer elemento A[0] se considera ordenado; es decir, la lista inicial consta de un
elemento.
2. Se inserta A[1] en la posicin correcta, delante o detrs de A[0], dependiendo de que sea
menor o mayor.
3. Por cada bucle, ciclo o iteracin i (desde i=1 hasta n-1) se explora la sublista A[i-1]. A[0]
buscando la posicin correcta de insercin; a la vez se mueve hacia abajo (a la derecha en la
sublista) una posicin todos los elementos mayores que el elemento a insertar A[i], para dejar
vaca esa posicin.
4. Insertar el elemento a la posicin correcta.

Figura. Mtodo de insercin. Recuperado de educacioninformatica.com


Mtodo de seleccin
El ordenamiento por seleccin en un mtodo que requiere O
operaciones para ordenar
una lista de n elementos. La idea bsica de un ordenamiento por seleccin, es la seleccin
repetida de la llave menor restante en una lista de datos no clasificados, como la siguiente
llave (dato o registro), en una lista de datos ordenada que crece.

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
La totalidad de la lista de llaves no ordenadas, debe estar disponible, para que nosotros
podamos seleccionar la llave con valor mnimo en esa lista. Sin embargo, la lista ordenada,
podr ser puesta en la salida, a medida que avancemos.
En Joyanes, (2010, pp. 370-373) revisa diferentes ejemplos que ilustran este mtodo de
ordenacin, as mismo encontrars tambin algunos pseudocdigos y diagramas de flujo que
explican dicho mtodo.
Este algoritmo es sencillo. Consiste en lo siguiente:
Buscas el elemento ms pequeo de la lista.
Lo intercambias con el elemento ubicado en la primera posicin de la lista.
Buscas el segundo elemento ms pequeo de la lista.
Lo intercambias con el elemento que ocupa la segunda posicin en la lista.
Repites este proceso hasta que hayas ordenado toda la lista.
Su funcionamiento se indica enseguida:
Buscar el mnimo elemento de la lista.
Intercambiarlo con el primero.
Buscar el mnimo en el resto de la lista.
Intercambiarlo con el segundo.
Los pasos anteriores podemos resumirlos:
Buscar el mnimo elemento entre una posicin i y el final de la lista
Intercambiar el mnimo con el elemento de la posicin i
El siguiente pseudocdigo ilustra el algoritmo en el mtodo de ordenamiento por seleccin
(sort en ingls).
para i=1 hasta n-1
minimo = i;
para j=i+1 hasta n
si lista[j] < lista[minimo] entonces
minimo = j /* (!) */
fin si
fin para
intercambiar(lista[i], lista[minimo])
fin para
Este algoritmo resulta un poco mejor que el de burbuja. En el caso de tener que ordenar un
vector de enteros, no visualizamos gran mejora, pero cuando hay que ordenar un vector de
estructuras ms complejas, la operacin intercambiar() sera ms difcil en este caso. Este
algoritmo realiza muchas menos operaciones intercambiar() que el de burbuja, por lo que lo
mejora en algo. Si sustituimos la lnea comentada con (!) por intercambiar(lista[i], lista[j])
tendramos una versin del algoritmo de la burbuja (naturalmente eliminando el orden
intercambiar del final).

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Otra desventaja de este algoritmo respecto a otros, como el de burbuja o de insercin directa,
es que no mejora su rendimiento cuando los datos ya estn ordenados o parcialmente
ordenados. Por ejemplo, en el caso de la ordenacin de burbuja se requerira una nica
pasada para detectar que el vector ya est ordenado y finalizar, en la ordenacin por seleccin
se realizaran el mismo nmero de pasadas independientemente de si los datos estn
ordenados o no.

Figura. Algoritmo de seleccin. Recuperado de: educacioninformatica.com


El algoritmo conocido como quicksort (ordenacin rpida) recibe el nombre de su autor, Tony
Hoare. Este mtodo o algoritmo es muy sencillo: consiste en la divisin en particiones de la
lista a ordenar, por lo que se puede considerar que aplica la tcnica: divide y vencers. El
mtodo es: posiblemente, el ms pequeo de cdigo, ms rpido, ms elegante, ms
interesante y eficiente de los algoritmos de ordenacin conocidos. En Goodrich/Tamassia,
(2010, pp. 467-477) podrs enriquecer tu conocimiento acerca de este mtodo ya que explica
de forma bastante amplia a travs de diferentes ejemplos y extractos de cdigo en java la
forma como se utiliza dicho mtodo.

Figura. Algoritmo quicksort. Recuperado de: eui.upm.es

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Ahora, realiza La actividad 2. Identificacin de errores en mtodos de ordenacin que te
permitir evaluar tu conocimiento y comprensin adecuados acerca de los diferentes temas de
ordenacin abordados a lo largo del prim er tema, abre el archivo Actividades de la unidad,
sigue las indicaciones y completa cada una de ellas.

2.2. Mtodos de bsqueda


En el tema anterior hablamos de los diferentes mtodos o algoritmos de ordenacin que
existen; en este tema abordaremos: la bsqueda, la cual viene a complementar la ordenacin;
ya que, no tendra caso ordenar datos, si luego no es posible recobrarlos mediante una buena
bsqueda; por ejemplo, de nada nos servira ordenar alfabticamente nuestros contactos en
una agenda si luego no vamos a buscar los datos de alguien en particular. Por lo tanto, la
ordenacin y la bsqueda van estrechamente relacionadas.
Existen diferentes mtodos o algoritmos de bsqueda de datos, los ms conocidos son el
mtodo de bsqueda secuencial, el mtodo de bsqueda binaria y el mtodo de
bsqueda por interpolacin.
Para abundar ms acerca de los diferentes mtodos de bsqueda que existen, as como su
forma de utilizarlos y ejemplos, consulta Joyanes, (2010, pp. 379-398), en este texto
encontrars, para cada mtodo, pseudocdigos y diagramas de flujo que explican de manera
clara estos algoritmos.

Figura. Bsqueda de datos en la Seccin Amarilla


Recuperado de: www.sexenio.com.mx
As mismo revisa el archivo con la Actividad 1. Identificacin de mtodos de bsqueda, en
dicho archivo, encontrars una serie de indicaciones que debers seguir y completar
satisfactoriamente.

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Bsqueda secuencial
Comenzamos a revisar el mtodo de bsqueda secuencial, tambin llamada bsqueda
lineal que busca un elemento de una lista utilizando un valor destino llamado clave.
En este mtodo, los elementos de una lista o vector se examinan en secuencia: uno despus
de otro. La bsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona
cuyo nmero de telfono es 7141414 en el directorio telefnico de la localidad. Los directorios
de telfonos estn organizados alfabticamente por el nombre del titular o dueo de la lnea en
lugar de por nmeros de telfono, de modo que deben examinarse todos los nmeros, uno
despus de otro, esperando encontrar el nmero 7141414.
El algoritmo de bsqueda secuencial compara cada elemento del arreglo con la clave de
bsqueda. Dado que el arreglo no est en un orden prefijado, es probable que el elemento a
buscar pueda ser el primer elemento, el ltimo elemento o cualquier otro. El programa tendr
que comparar la clave de bsqueda con por lo menos la mitad de los elementos del arreglo. El
mtodo de bsqueda lineal funcionar bien con arreglos pequeos o no ordenados. La
eficiencia de la bsqueda secuencial es mnima, tiene complejidad lineal, O(n). Consulta
Joyanes/Zahonero, (2010, pg. 442), ah encontrars una breve y concisa explicacin de este
mtodo de bsqueda.

Figura. Bsqueda secuencial. Recuperado de: recursosdelweb.com

10

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Bsqueda binaria
Ahora revisars el mtodo de bsqueda binaria, sta proporciona una tcnica de bsqueda
mejorada. Como ejemplo: una palabra en un diccionario; teniendo la palabra a buscar, se abre
el diccionario ya sea al principio, en el medio o al final, dependiendo de la letra con que inicia
la palabra. Generalmente, a menos que tengamos un separador de libros o algo similar, no
encontramos la pgina a la primera, tenemos que estar cambiando de hoja, tal vez estemos
muy prximos a la letra inicial buscada. Por ejemplo, si la palabra comienza con N y se est
en la P se mueve uno hacia atrs. El proceso contina hasta que se encuentra la pgina
buscada o hasta que se descubre que la palabra no est en la lista. Consulta
Joyanes/Zahonero, (2010, pg. 445), en dicho texto, se describe el proceso para ejecutar este
mtodo de bsqueda.

Figura. Bsqueda binaria. Recuperado de ica.luz.ve

Bsqueda por interpolacin


Finalmente, revisaremos el tercer tipo de bsqueda, la bsqueda por interpolacin.
Este mtodo consiste en tratar de acertar en qu parte del intervalo est la clave que se est
buscando en lugar de ciegamente dividir el arreglo a la mitad. Este mtodo se puede aplicar
solamente a tablas o archivos ordenados. Como su nombre lo indica, se trata de llegar al
elemento buscado por medio de la interpolacin lineal. El procedimiento es recursivo; como en
el caso de la bsqueda binaria, en cada paso se van modificando los lmites, disminuyendo el
intervalo, hasta llegar al elemento buscado.
El algoritmo es similar al de bsqueda binaria, la diferencia est en que, en lugar de dividir el
rea en mitades, se delimita por medio de los valores resultantes de la interpolacin.Consulta
Joyanes/Zahonero, (2010, pg. 445), en dicho texto se comenta que la bsqueda por
interpolacin es ms eficiente que la bsqueda binaria aunque despus de todo se usan de
forma muy parecida.

11

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Hemos terminado de revisar los diferentes mtodos de bsqueda que existen. Es importante
conocer el funcionamiento de cada mtodo para, segn la situacin que se plantee, sea el
mtodo que se aplique. Por lo tanto, sigue las indicaciones que a continuacin se te presentan.

Autoevaluacin
Para reforzar los conocimientos relacionados con los temas que se abordaron en esta
segunda Unidad del curso, es necesario que resuelvas la Autoevaluacin de la unidad.
Para realizar esta actividad, abre tu archivo de Actividades de la unidad.
Por ltimo debers realizar la Evidencia de aprendizaje. Programa que emplee mtodos de
ordenacin y bsqueda para que puedas aplicar los conocimientos adquiridos en esta unidad y
los apliques mediante la realizacin de un programa en java, no olvides seguir las
instrucciones al pie de la letra.

Autorreflexiones
Adems de enviar tu trabajo de la Evidencia de aprendizaje, es importante que ingreses al
foro Preguntas de Autorreflexin y consultes las preguntas que tu Facilitador(a) presente, a
partir de ellas, debes elaborar tu Autorreflexin en un archivo de texto llamado
DEDA_U2_ATR_XXYZ. Posteriormente enva tu archivo mediante la herramienta
Autorreflexiones.

Cierre de la unidad
En esta unidad se abordaron diferentes temas de gran inters en la programacin, estos
temas son los Mtodos de ordenacin y los Mtodos de bsqueda.
Despus de que abordaste los temas de pilas, listas y colas en la unidad anterior, con la
presente unidad, puedes identificar un complemento a las principales estructuras de datos.
Se parti de cmo se almacenan y manipulan datos segn la estructura que se est
manejando, es decir, se aplica un algoritmo distinto para cada estructura, luego, mediante los
diferente mtodos de ordenacin sabrs cmo puedes ordenar los datos que previamente se
almacenaron en alguna estructura, as mismo, aprendiste a manejar diferentes mtodos de
bsqueda de datos.
Todo eso lleva te lleva a saber que: no es til almacenar informacin si luego sta no es
ordenada y posteriormente se realiza una bsqueda. Haciendo una analoga con una agenda
telefnica, generalmente se realiza el registro de la informacin en forma alfabtica
ascendente porque luego habr la necesidad de realizar la bsqueda de algn registro en
particular. Con los temas revisados en la asignatura Estructura de Datos sers capaz de
realizar programas robustos, como puede ser una agenda telefnica que te permita ordenar
los distintos datos, as como realizar bsquedas eficientes.

12

Estructuras de Datos
Unidad 2. Ordenacin y bsqueda
Para saber ms
Existen diversas fuentes que puedes consultar para ampliar tus conocimientos. Puedes
consultar:
http://web.ing.puc.cl/~iic1103/IIC1103/Inicio_files/Ordenacion%20y%20Busqueda.pdf
En esta fuente podrs encontrar informacin de los temas abordados en esta unidad:
ordenacin y bsqueda. La pgina se puede consultar en lnea o puedes descargar el
documento .pdf.
Esta fuente proporciona ejemplos reales que facilitan la comprensin de los diferentes
conceptos abordados en la unidad.
http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/Estructura%20de%20Datos/index.htm
Esta fuente ofrece diferentes temas, entre ellos los tratados en esta unidad, existen vnculos
que te llevarn a cada tema en particular.

Fuentes de consulta
Goodrich/Tamassia, 2010. Estructura de Datos y Algoritmos en Java. Mxico: CECSA
Joyanes/Zahonero, 2012. Programacin en Java 2, Algoritmos, estructuras de datos y
programacin orientada a objetos. Espaa: Mc Graw Hill
Joyanes, 2010. Fundamentos de programacin, Algoritmos, Estructuras de datos y objetos.
Espaa: Mc Graw Hill

13

Anda mungkin juga menyukai