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.
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.
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.
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.
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.
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.
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.
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