Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIDAD 1
FACILITADOR:
M.C. SUSANA MONICA ROMAN NAJERA
TRABAJO:
MTODOS DE BSQUEDA Y ORDENAMIENTO.
NOMBRE DE LA ALUMNA:
BENITA VILLALOBOS PEREZ
N. DE CONTROL: 131020103
SEMESTRE: 3
GRUPO: E2
CARRERA:
ING. EN TECNOLOGIAS DE LA INFORMACIN Y DE LAS COMUNICACIONES.
NDICE
INTRODUCCIN ........................................................................................................................... 1
MTODOS DE BSQUEDA Y ORDENAMIENTO .................................................................. 2
MTODO BURBUJA..................................................................................................................... 3
MTODO DE SELECCIN ......................................................................................................... 3
MTODO POR INSERCIN ....................................................................................................... 4
MTODO DE INTERCAMBIO ..................................................................................................... 5
MTODO SHELL........................................................................................................................... 6
BSQUEDA SECUENCIAL ........................................................................................................ 9
BSQUEDA BINARIA ................................................................................................................ 10
ORDENACIN RPIDA (QUICKSORT) ...................................................................................... 11
ALGORITMO QUICKSORT. ...................................................................................................... 13
MTODO DE BINSORT. ............................................................................................................ 16
MTODO DE RADIXSORT ....................................................................................................... 17
CONCLUSIN ............................................................................................................................. 21
OTRAS FUENTES CONSULTADAS ....................................................................................... 22
INTRODUCCIN
Con mucha frecuencia los programadores trabajan con grandes cantidades de datos
almacenados en arrays y registros, y por ello ser necesario determinar si un array
contiene un valor que coincida con un cierto valor clave. El proceso de encontrar un
elemento especfico de un arrays se denomina bsqueda.
Los mtodos logartmicos son ms complejos con respecto a los directos, pero
requieren menos comparaciones y movimientos para ordenar sus elementos, pero su
elaboracin y compresin resulta ms sofisticada y abstracta.
Se debe tener en cuenta que la eficiencia entre los distintos mtodos se mide
por el tiempo de ejecucin del algoritmo y este depende fundamentalmente del
nmero de comparaciones y movimientos que se realicen entre sus elementos.
Por lo tanto podemos decir que cuando N es pequeo debe utilizarse mtodos
directos y cuando N es mediana o grande deben emplearse mtodos logartmicos.
MTODO BURBUJA
El mtodo de la burbuja es uno de los ms simples, es tan fcil como comparar todos
los elementos de una lista contra todos, si se cumple que uno es mayor o menor a
otro, entonces los intercambia de posicin.
Se denomina burbuja debido a que los valores ms pequeos burbujean
gradualmente (suben) hacia la cima o parte superior del array de modo similar a
como suben las burbujas en el agua, mientras que los valores mayores se hunden en
la parte inferior del array.
MTODO DE SELECCIN
Los mtodos de ordenacin por seleccin se basan en dos principios bsicos:
Seleccionar
Colocarlo
el
en
elemento
la
ms
posicin
pequeo
ms
baja
(o
(o
ms
ms
grande)
del
arreglo.
alta)
del
arreglo.
Figura 1
Figura 2
Figura 3
MTODO DE INTERCAMBIO
Se encarga de ordenar los elementos de una lista en orden ascendente. Este
algoritmo se basa en la lectura sucesiva de la lista a ordenar, comparando el
elemento inferior de la lista con los restantes y efectuando intercambio de posiciones
cuando el orden resultante de la comparacin no sea el correcto.
Figura 4
Figura 5
MTODO SHELL
El nombre se debe a su inventor, D. L. Shell. Se suele denominar tambin
ordenacin por insercin con incrementos decrecientes. Se considera que el mtodo
Shell es una mejora de los mtodos de insercin directa.
Shell modifica los saltos contiguos resultantes de las comparaciones por saltos
de mayor tamao y con ello se consigue que la ordenacin sea ms rpida.
Generalmente se toma como salto inicial n/2 (siendo n el nmero de elementos),
luego se reduce el salto a la mitad en cada repeticin hasta que el salto es de
tamao 1.
Ejemplo:
74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30
Se debe empezar con k=n/2, siendo n el nmero de elementos de arreglo, y
utilizando siempre la divisin entera.... despus iremos variando k hacindolo ms
6
pequeo mediante sucesivas divisiones por 2, hasta llegar a k=1. Pero vamos a
ello... En nuestro ejemplo, n=11 (porque hay 11 elementos). As que k=n/2=11/2=5.
Empezamos con k=5. As pues, vamos a dividir nuestro arreglo original en 5 subarreglo, en los cuales, sus elementos estarn separados por 5 lugares del arreglo
original (el salto o gap es 5).
Tomamos el primer elemento (el 74) contamos 5 lugares y tomamos tambin otro
elemento (el 97) volvemos a contar 5 y tomamos otro (el 30) y acabamos porque se
nos acaba el arreglo. El primer sub-arreglo con k=5 es el formado por 74, 97 y 30.
74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30
Ahora, ordenaremos los elementos del sub-arreglo (rojo) pero slo entre ellos,
utilizando el algoritmo de Insercin directa.
74, 97, 30
30, 14, 21, 44, 38, 74, 11, 78, 65, 88, 97
El 30, un elemento relativamente pequeo se ha ido hacia el principio y el 97 hacia el
final.
Formemos ahora otro sub-arreglo con salto k=5... Partiendo del segundo elemento
(el 14) y contando 5 (tomamos tambin el 11) y hasta ah, porque se acaba el
arreglo.
30, 1, 21, 44, 38, 74, 11, 78, 65, 88, 97
Vamos a ordenarlos el 11 primero y el 14 despus.
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
Ahora a por otro el 21 y el 78
30, 11, 21, 44, 38, 74, 14, 78, 65, 88, 97
BSQUEDA SECUENCIAL
Busca un elemento de una lista utilizando un valor destino llamado clave. En una
bsqueda secuencial (a veces llamada bsqueda lineal), los elementos de una lista o
vector se exploran (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 958-220000 en un directorio o listado telefnico de su ciudad.
La bsqueda secuencial se utiliza normalmente cuando el array no est
ordenado. Comienza en el principio del array y busca hasta que se encuentra el dato
buscado y se llega al final de la lista.
Figura 6
BSQUEDA BINARIA
Si la lista est ordenada, la bsqueda binaria proporciona una tcnica de bsqueda
mejorada. Una bsqueda binaria tpica es la bsqueda de una palabra en un
diccionario.
Dada la palabra, se abre el libro cerca del principio, del centro o del final
dependiendo de la primera letra del primer apellido o de la palabra que busca. Se
puede tener suerte y acertar con la pgina correcta; pero, normalmente, no ser as y
se mueve el lector a la pgina anterior o posterior del libro.
Por ejemplo, si la palabra comienza con J y se est en la L 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.
Si un array est ordenado, se puede utilizar un algoritmo ms eficiente
denominado bsqueda binaria.
Se tiene un arreglo ordenado de 19 casillas.
10
Figura 7
Bsqueda Binaria
Posicin = 16
Posicin = 16
Comparaciones = 17
comparaciones = 3
Figura 8
particin o divisin se hace de tal forma que todos los elementos de la primera
sublista (particin izquierda) son menores que todos los elementos de la segunda
sublista (particin derecha).
Las dos sublistas se ordenan entonces independentemente. Para dividir la
lista en particiones (sublistas) se elige uno de los elementos de la lista y se utiliza
como pivote o elemento de particin. Si se elige una lista cualquiera con los
elementos en orden aleatorio, se puede seleccionar cualquier elemento de la lista
como pivote, por ejemplo, el primer elemento de la lista.
Si la lista tiene algn orden parcial conocido, se puede tomar otra decisin
para el pivote. Idealmente, el pivote se debe elegir de modo que se divida la lista
exactamente por la mitad, de acuerdo al tamao relativo de las claves. Por ejemplo,
si se tiene una lista de enteros de 1 a 10, 5 o 6 seran pivotes ideales, mientras que 1
o 10 seran elecciones pobres de pivotes.
Una vez que el pivote ha sido elegido, se utiliza para ordenar el resto de la
lista en dos sublistas: una tiene todas las claves menores que el pivote y la otra,
todos los elementos (claves) mayores que o iguales que el pivote (o al revs). Estas
dos listas parciales se ordenan recursivamente utilizando el mismo algoritmo; es
decir, se llama sucesivamente al propio algoritmo quicksort. La lista final ordenada se
consegue concatenando la primera sublista, el pivote y la segunda lista, en ese
orden, en uma nica lista. La primera etapa de quicksort es la divisin o
particionado recursivo de la lista hasta que todas las sublistas constan de slo un
elemento.
Por ejemplo:
Se ordena una lista de nmeros enteros aplicando el algoritmo quicksort, como
pivote se elige el primer elemento de la lista.
12
Figura 9
ALGORITMO QUICKSORT.
13
lista son distintos, aunque ser preciso tener en cuenta los casos en que existan
elementos idnticos.
Los pasos que sigue el algoritmo quicksort:
Seleccionar el elemento central de a [0: n-1] como pivote.
Dividir los elementos restantes en particiones izquierda y derecha, de modo que
ningn elemento de la izquierda tenga una clave (valor) mayor que el pivote y que
ningn elemento a la derecha tenga una clave ms pequea que la del pivote.
Ordenar la particin izquierda utilizando quicksort recursivamente.
Ordenar la particin derecha utilizando quicksort recursivamente.
La solucin es particin izquierda seguida por el pivote y a continuacin
particin derecha.
ANLISIS DEL ALGORITMO QUICKSORT.
El anlisis general de la eficiencia de quicksort es difcil. La mejor forma de ilustrar y
calcular la complejidad del algoritmo es considerar el nmero de comparaciones
realizadas teniendo en cuenta circunstancias ideales. Supongamos que n (nmero
de elementos de la lista) es una potencia de 2, n = 2k (k = log2 n). Adems,
supongamos que el pivote es el elemento central de cada lista, de modo que
quicksort divide la sublista en dos sublistas aproximadamente iguales.
En la primera exploracin o recorrido hay n 1 comparaciones. El resultado
de la etapa crea dos sublistas aproximadamente de tamao n/2. En la siguiente fase,
el proceso de cada sublista requiere aproximadamente n/2 comparaciones. Las
comparaciones totales de esta fase son 2(n/2) = n.
La siguiente fase procesa cuatro sublistas que requieren un total de 4(n/4)
comparaciones, etc. Eventualmente, el proceso de divisin termina despus de k
pasadas cuando la sublista resultante tenga tamao 1. El nmero total de
comparaciones es aproximadamente:
n + 2(n/2) + 4(n/4) + + n(n/n) = n + n + + n
14
= n k = n log2 n
Para una lista normal la complejidad de quicksort es O(n log2 n). El caso ideal
que se ha examinado se realiza realmente cuando la lista (el array) est ordenado en
orden ascendente. En este caso el pivote es precisamente el centro de cada sublista.
Figura 11
15
MTODO DE BINSORT.
Este mtodo, tambin llamado clasificacin por urnas, persigue conseguir funciones
de tiempo de ejecucin menores de O(n log n), para ordenar una secuencia de n
elementos siempre que se conozca algo acerca del tipo de las claves por las que se
estn ordenando.
Supngase que se tiene un vector v [] de registros, se quiere ordenar respecto
um campo clave de tipo entero, adems se sabe que los valores de las claves se
encuentran en el rango de 1 a n, sin claves duplicadas y siendo n el nmero de
elementos. En estas circunstancias es posible colocar los registros ordenados en um
array auxiliar t [] mediante este bucle:
for 1:= 1 to n do
t[v[i].clave] = v[i];
Sencillamente determina la posicin que le corresponde segn el valor del
campo clave. El bucle lleva un tiempo de ejecucin de complejidad O(n).
Esta ordenacin tan sencilla que se ha expuesto es un caso particular del
mtodo de ordenacin por urnas (binsort). Este mtodo utiliza urnas, cada urna
contiene todos los registros con una misma clave.
El proceso consiste en examinar cada registro r a clasificar y situarle en la
urna i, coincidiendo i con el valor del campo clave de r. En la mayora de los casos en
que se utilice el algoritmo, ser necesario guardar ms de un registro en una misma
urna por tener claves repetidas. Entonces estas urnas hay que concatenarlas en el
orden de menor ndice de urna a mayor, as quedar el array en orden creciente
respecto al campo clave.
ALGORITMO DE ORDENACIN BINSORT.
Se considera que el campo clave de los registros que se van a ordenar son nmeros
enteros en el rango 1 .. m. Son necesarias m urnas por lo que es necesario definir
16
um vector de m urnas. Las urnas pueden ser representadas por listas enlazadas,
cada elemento de la lista contiene un registro cuyo campo clave es el
correspondiente al de la urna en la que se encuentra. As en la urna 1 se sitan los
registros cuyo campo clave sea igual a 1, en la urna 2 los registros cuyo campo clave
sea 2, y as sucesivamente en la urna i se sitan los registros cuyo campo clave sea
igual a i.
Una vez que se hayan distribuido los registros en las diversas urnas es
necessrio concatenar las listas.
En la siguiente figura se muestra cmo realizar la concatenacin.
Figura 12
MTODO DE RADIXSORT
Este mtodo puede considerarse como una generalizacin de la clasificacin por
urnas. Aprovecha la estrategia de la forma ms antigua de clasificacin manual,
consistente en hacer diversos montones de fichas, cada uno caracterizado por tener
sus componentes un mismo dgito (letra, si es alfabtica) en la misma posicin; estos
montones se recogen en orden ascendente y se reparte de nuevo en montones
segn el siguiente dgito de la clave.
Como ejemplo, suponer que se han de ordenar estas fichas identificadas por
tres dgitos:
17
Figura 13
Figura 14
Figura 15
Figura 16
18
Figura 17
Figura 18
194, 216, 236, 247, 345, 365, 389, 425, 431, 467, 529, 572, 672, 721, 746, 834, 836,
891.
ALGORITMO DE ORDENACIN RADIXSORT
ordena es alfabtica, habr tantas urnas como letras distintas, desde la urna que
represente a la letra a hasta la z.
Para el caso de que clave sea entera, en primer lugar se determina el mximo
nmero de dgitos que puede tener la clave. En un bucle de tantas iteraciones como
mximo de dgitos se realizan las acciones de distribuir por urnas los registros,
concatenar.
La distribucin por urnas exige obtener el dgito del campo clave que se
encuentra en la posicin definida por el bucle externo, dicho dgito ser el ndice de
la urna.
20
CONCLUSIN
Un aprendizaje que se obtuvo al realizar esta investigacin es que se conoci cada
uno de los tipos de mtodos de bsqueda ya que al momento de hacer un programa
extenso podramos utilizar algunos de estos mtodos y as encontrar la informacin
ms rpida y no perder tanto tiempo.
Al comparar con las dems definiciones y funciones de cada uno de los
mtodos de bsqueda pude notar que este mtodo es mas eficiente y entendible que
los dems. Es
21
2014.
Disponible
en:
http://estructurasdatoscatolica.blogspot.mx/2010/05/metodos-ordenamiento-ybusqueda.html.
Mtodos de bsqueda. Internet. Fuera de lnea. Pgina consultada el da 29 de
noviembre
del
2014.
Disponible
en:
http://www.paginasprodigy.com/edserna/cursos/estddatos/notas/Unidad3.Ordenamie
ntos.pdf
Mtodos de bsqueda. Internet. Fuera de lnea. Pgina consultada el da 29 de
noviembre
del
2014.
Disponible
en:
http://www.aliatuniversidades.com.mx/bibliotecasdigitales/pdf/sistemas/Estructura_de
_datos/Estructura_de_datos_Parte_1.pdf.
22