You are on page 1of 13

Estructuras de datos

Unidad 2. Ordenacin y bsqueda

Ingeniera en Desarrollo de Software


4 Semestre

Programa de la asignatura:
Estructura de datos

Unidad 2.
Ordenacin y bsqueda

Clave:
Ingeniera TSU
15142419 16142419

Universidad Abierta y a Distancia de Mxico

1
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

2
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

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,
los cuales, como podrs recordar, se refieren a las diferentes estructuras de datos, a sus
algoritmos y representacin, as como a los mtodos asociados a cada estructura en
particular. Es decir, en tanto que en la primera unidad aprendiste a manejar las estructuras de
datos, en esta unidad aprenders a ordenar los datos, adems de realizar bsquedas.

A lo largo de la unidad revisars textos y realizars actividades, de modo que sers capaz de
realizar ejercicios de programacin donde apliques los distintos mtodos de ordenacin y de
bsqueda de datos. Estos ejercicios de programacin estarn relacionados con aplicaciones
reales.

Propsitos de la unidad

Al trmino de esta unidad logrars:


Conocer y emplear 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

3
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

2.2.1. Bsqueda secuencial


2.2.2. Bsqueda binaria
2.2.3. Bsqueda por interpolacin

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 y ofrece ventajas y desventajas en cuanto a los otros
mtodos existentes; es decir, conocers diferentes opciones para ordenar y buscar datos, pero
sers t quien decida qu mtodo emplears, segn sea el caso y tu preferencia. En esta
unidad podrs complementar los temas vistos en la unidad anterior, puesto 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 almacenamiento correcto 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 que consiste en disponer un conjunto de datos en algn orden
determinado 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.

Agenda telefnica. Recuperado de: resiges.com

4
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Existen muchos mtodos de ordenacin, por lo que 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:
Tiempo menor de ejecucin en computadora.
Menor nmero de instrucciones.

Mtodos de ordenacin de datos. Entre los diversos mtodos de ordenacin, los ms


conocidos y utilizados, se pueden mencionar los siguientes:
Mtodo de la burbuja (bubble sort, por su denominacin en ingls)
Mtodo de insercin.
Mtodo de seleccin
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), y 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 debido a que slo usa comparaciones para operar elementos. Por ello,
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.

5
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Mtodo de la burbuja. Tomado de: http://www.um.es/

Mtodo de insercin
Este mtodo es similar al proceso tpico de ordenar tarjetas de nombres (cartas de una baraja)
por orden alfabtico, el cual consiste en insertar un nombre en su posicin correcta dentro de
una lista o archivo que ya est ordenado.

Joyanes (2010, pp. 368-370) muestra diferentes ejemplos que ilustran este mtodo de
ordenacin; y en su obra tambin 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 si es
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 en la posicin correcta.

6
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Mtodo de insercin.
Tomado de http://www.educacioninformatica.com

Mtodo de seleccin

El ordenamiento por seleccin es 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.

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) puedes revisar diferentes ejemplos que ilustran este mtodo
de ordenacin, y encontrars tambin algunos pseudocdigos y diagramas de flujo que
explican dicho mtodo.

Este algoritmo es sencillo, y 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.

7
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Los pasos anteriores se pueden resumir:


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

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; por su parte, 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. Tomado de: educacioninformatica.com

8
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

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. Para enriquecer tu
conocimiento acerca de este mtodo, consulta la obra de Goodrich/Tamassia (2010, pp. 467-
477), pues explica ampliamente cmo se utiliza este mtodo a travs de diferentes ejemplos y
extractos de cdigo en java.

Algoritmo quicksort. Recuperado de: eui.upm.es

2.2. Mtodos de bsqueda

En el tema anterior hablamos de los diferentes mtodos o algoritmos de ordenacin que


existen; y en este tema abordaremos la bsqueda, la cual complementa 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 en los diferentes mtodos de bsqueda que existen, as como en su


forma de utilizarlos y en algunos ejemplos, consulta el texto de Joyanes (2010, pp. 379-398),
en el que encontrars pseudocdigos y diagramas de flujo que explican de manera clara estos
algoritmos para cada mtodo.

9
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Bsqueda de datos en la Seccin Amarilla.


Tomado de: http://www.sexenio.com.mx/diario/20110805/7236.jpg

Bsqueda secuencial

Mtodo de bsqueda secuencial, tambin llamado bsqueda lineal, se denomina al mtodo


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 a 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, y tiene complejidad lineal O(n). Consulta a
Joyanes/Zahonero (2010, pg. 442) para una breve y concisa explicacin de este mtodo de
bsqueda.

10
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Bsqueda secuencial. Tomado de: http://www.recursosdelweb.com/

Bsqueda binaria

El mtodo de bsqueda binaria, proporciona una tcnica de bsqueda mejorada, por


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. En el texto de Joyanes/Zahonero (2010,
pg. 445) se describe el proceso para ejecutar este mtodo de bsqueda.

11
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Bsqueda binaria. Tomado 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 dividir ciegamente 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.
Joyanes/Zahonero (2010, pg. 445) comenta que la bsqueda por interpolacin es ms
eficiente que la bsqueda binaria, aunque despus de todo se usan de forma muy parecida.

Hemos terminado de revisar los diferentes mtodos de bsqueda que existen. Es importante
conocer el funcionamiento de cada mtodo para aplicar el que mejor se adece a la situacin
planteada. Por lo tanto, sigue las indicaciones que a continuacin se te presentan.

Cierre de la unidad

En esta unidad se abordaron diferentes temas de gran inters en la programacin: mtodos


de ordenacin y mtodos de bsqueda. Despus de revisar 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.

12
Estructuras de datos
Unidad 2. Ordenacin y bsqueda

Se parti de cmo se almacenan y manipulan datos segn la estructura con se cuente. Es


decir, se aplica un algoritmo distinto para cada estructura; luego, mediante los diferentes
mtodos de ordenacin, sabrs cmo puedes ordenar los datos que previamente se
almacenaron en alguna estructura. Asimismo, aprendiste a manejar diferentes mtodos de
bsqueda de datos.

Todo eso lleva te lleva a saber que no es til almacenar informacin si 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.

Para saber ms

Existen diversas fuentes que puedes consultar para ampliar tus conocimientos. Aqu se
sugieren algunas:

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 en formato pdf.
http://web.ing.puc.cl/~iic1103/IIC1103/Inicio_files/Ordenacion%20y%20Busqueda.pdf

Esta fuente proporciona ejemplos reales que facilitan la comprensin de los diferentes
conceptos abordados en la unidad. Entre los diferentes temas que esta fuente ofrece, figuran
aquellos tratados en esta unidad, y existen vnculos que te llevarn a cada tema en particular.
http://www.itnuevolaredo.edu.mx/takeyas/Apuntes/Estructura%20de%20Datos/index.htm

Fuentes de consulta

Goodrich, M. y Tamassia, R. (2010). Estructura de datos y algoritmos en Java. Mxico:


CECSA.
Joyanes, L. (2010). Fundamentos de programacin. Algoritmos. Estructuras de datos y
objetos. Espaa: McGraw-Hill.
Joyanes, L. y Zahonero, I. (2012). Programacin en Java 2: algoritmos, estructuras de
datos y programacin orientada a objetos. Espaa: McGraw-Hill.

13

You might also like