Sunteți pe pagina 1din 20

Repblica Bolivariana de Venezuela

Ministerio del Poder Popular Para la Defensa


Universidad Nacional Experimental de la Fuerza Armada Nacional
U.N.E.F.A, Ncleo Delta Amacuro

MTODOS DE ORDENAMIENTO Y
BUSQUEDA

Profesor:

Bachilleres:

Licdo Melvin Romero

Manuel Yegres CI 25.125.740

Ingeniera de Sistemas

Laura Moreno

5to semestre, Seccin A

Jos Rodriguez CI
Sanjiv Seeram

Febrero de 2015

CI 21.384.237
CI 24.851.280

INDICE
Pg.
Introduccin -

Vectores

Matrices

Mtodo de Ordenamiento -

11

Conclusin -

21

Bibliografa -

22

Mtodo de Bsqueda

INTRODUCCIN
Muchas actividades humanas requieren que en ellas las diferentes
colecciones de elementos utilizados se coloquen en un orden especfico. Las
oficinas de correo y las empresas de mensajera ordenan el correo y los
paquetes por cdigos postales con el objeto de conseguir una entrega
eficiente; los anuarios o listines telefnicos ordenan sus clientes por orden
alfabtico de apellidos con el fin ltimo de encontrar fcilmente el nmero de
telfono deseado; los estudiantes de una clase en la universidad se ordenan
por sus apellidos o por los nmeros de expediente, etc. Por esta
circunstancia una de las tareas que realizan ms frecuentemente las
computadoras en el procesamiento de datos es la ordenacin. El estudio de
diferentes mtodos de ordenacin es una tarea intrnsecamente interesante
desde un punto de vista terico y, naturalmente, prctico
La optimizacin de un algoritmo se obtiene cuando se hace la eleccin
correcta de algoritmo y estructura de datos, esto hace referencia al anlisis
cuidadoso de su desempeo para analizar las fallas y concebir mejoras antes
de llevarlos a la ejecucin de los mismos en una computadora. El objetivo de
estudiar los algoritmos de ordenamiento es doble. Primero, porque permite
ejemplificar la importancia del estudio de la eficiencia de los algoritmos,
mostrando que no es intuitivo predecir cunto tiempo de ejecucin toman.
Y segundo, porque los computadores pasan tpicamente 50% de su tiempo
ordenando (de ah que los espaoles y franceses prefieren usar la palabra
ordenador en vez de computador).

1) Vectores
Como su nombre lo indica matemticamente es una herramienta para
poder expresar varios valores o magnitudes al mismo tiempo. En
programacin

son

considerados

estructuras

de

datos

arreglos

unidimensionales (de una sola dimensin, de dimensin simple) los cuales


poseen la capacidad de almacenar muchos datos al mismo tiempo, que
contienen una serie de elementos del mismo tipo y se distinguen entre s por
un ndice (marcado numricamente empezando por 0 hasta n-1).
Declaracin de un Vector
C++:
Tipo de dato [nmero de elementos]={elemento 1, elemento 2,...,elemento
n};
Ejemplo: int v[7]={1,2,3,4,12,13,14}

En este ejemplo mostramos un vector simple de siete valores. Los cuales


son:
Valor 0 = 1
Valor 1 = 2
Valor 2 = 3
Valor 3 = 4
Valor 4 = 12

Valor 5 = 13
Valor 6 = 14
2) Matrices
Una matriz es una estructura de datos que contiene varias variables del
mismo tipo. Bsicamente es un conjunto de vectores. Una matriz puede ser
unidimensional, multidimensional o escalonada.
Declaracin de una Matriz
C++:
Tipo de dato nombre de la matriz [numero de filas][numero de
columnas]={elementos...}

3) Mtodos de Ordenamiento
Ordenamiento
Es la operacin de arreglar los registros de una tabla en algn orden
secuencial de acuerdo a un criterio de ordenamiento. El ordenamiento se
efecta con base en el valor de algn campo en un registro. El propsito
principal de un ordenamiento es el de facilitar las bsquedas de los
miembros del conjunto ordenado.
El ordenar un grupo de datos significa mover los datos o sus referencias para
que queden en una secuencia tal que represente un orden, el cual puede ser
numrico, alfabtico o incluso alfanumrico, ascendente o descendente.

Una coleccin de datos (estructura) puede ser almacenada en un


archivo, un array (vector o tabla), un array de registros, una lista enlazada o
un rbol. Cuando los datos estn almacenados en un array, una lista
enlazada o un rbol, se denomina ordenacin interna. Si los datos estn
almacenados en un archivo, el proceso de ordenacin se llama ordenacin
externa. Una lista se dice que est ordenada por la clave k si la lista est en
orden ascendente o descendente con respecto a esta clave.
La lista se dice que est en orden ascendente si: i<= k[j] implica que k[i] <=
k[j] y se dice que est en orden descendente si: i>j implica que k[i] <= k[j]
para todos los elementos de la lista. Por ejemplo, para una gua telefnica, la
lista est clasificada en orden ascendente por el campo clave k, donde k[i] es
el nombre del abonado (apellidos, nombre).
4 5 14 21 32 45 orden ascendente
75 70 35 16 14 12 orden descendente
Zacaras, Rodrguez, Martnez, Lpez, Garca orden descendente.
El propsito principal de un ordenamiento es el de facilitar las bsquedas de
los miembros del conjunto ordenado. Ej. De ordenamientos:
Dir. telefnico, tablas de contenido, bibliotecas y diccionarios, etc.
Cundo conviene usar un mtodo de ordenamiento? , Cuando se requiere
hacer una cantidad considerable de bsquedas y es importante el factor
tiempo.

Mtodos de Ordenamiento Elementales:


- Seleccin
- Insercin

- Burbujeo

Mtodos de Ordenamiento no Elementales:


-Shell
-Quick Sort
-Fusin

Tipos de Ordenamiento:

o Ordenamiento interno: Se lleva a cabo completamente en memoria


principal. Todos los objetos que se ordenan caben en la memoria
principal de la computadora.
o Ordenamiento externo: No cabe toda la informacin en memoria
principal y es necesario ocupar memoria secundaria (disco, cinta,
cilindro magntico, etc). El ordenamiento ocurre transfiriendo bloques
de informacin a memoria principal en donde se ordena el bloque y
este es regresado, ya ordenado, a memoria secundaria.
Tipos de Entrada de Datos:

a. Entrada Ordenada = MEJOR CASO


b. Entrada Orden Inverso = PEOR CASO
c. Entrada Desordenada = CASO AL AZAR
Tipos de Algoritmo:

Algoritmo Sensible: Modifica su tiempo de ejecucin segn el tipo


de entrada.

Algoritmo No Sensible: Su tiempo de ejecucin es independiente


al tipo de entrada.

Algoritmo Estable: Aquellos que teniendo clave repetida,


mantiene su posicin inicial igual a la final.

Algoritmo No Estable: Aquello que no respetan la posicin inicial


igual que la final teniendo claves repetidas

Mtodos Elementales:

ORDENAMIENTO POR SELECCIN

Descripcin.
o

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.

Anlisis del Algoritmo.


o Requerimientos de Memoria: Al igual que el ordenamiento burbuja,
este algoritmo slo necesita una variable adicional para realizar los
intercambios.
o

Tiempo de Ejecucin: El ciclo externo se ejecuta n veces para una


lista de n elementos. Cada bsqueda requiere comparar todos los
elementos no clasificados.

Ventajas:
1. Fcil implementacin.
2. No requiere memoria adicional.

3. Rendimiento constante: poca diferencia entre el peor y el mejor

caso.
Desventajas:
1. Lento.
2. Realiza numerosas comparaciones.

ORDENAMIENTO POR INSERCIN DIRECTA

Descripcin.
El algoritmo de ordenacin por el mtodo de insercin directa es un
algoritmo relativamente sencillo y se comporta razonablemente bien en gran
cantidad de situaciones.
Completa la tripleta de los algoritmos de ordenacin ms bsicos y de
orden de complejidad cuadrtico, junto con SelectionSort y BubbleSort.
Se basa en intentar construir una lista ordenada en el interior del array a
ordenar.
De estos tres algoritmos es el que mejor resultado da a efectos
prcticos. Realiza una cantidad de comparaciones bastante equilibrada con
respecto a los intercambios, y tiene un par de caractersticas que lo hacen
aventajar a los otros dos en la mayor parte de las situaciones.
Este algoritmo se basa en hacer comparaciones, as que para que
realice su trabajo de ordenacin son imprescindibles dos cosas: un array o
estructura similar de elementos comparables y un criterio claro de
comparacin, tal que dados dos elementos nos diga si estn en orden o no.
En cada iteracin del ciclo externo los elementos 0 a i, forman una
lista ordenada.

Anlisis del Algoritmo.


o

Estabilidad: Este algoritmo nunca intercambia registros con claves


iguales. Por lo tanto es estable.

Requerimientos de Memoria: Una variable adicional para realizar los


intercambios.

Tiempo de Ejecucin: Para una lista de n elementos el ciclo externo se


ejecuta n1 veces. El ciclo interno se ejecuta como mximo una vez en
la primera iteracin, 2 veces en la segunda, 3 veces en la tercera, etc.

Ventajas:
1. Fcil implementacin.
2. Requerimientos mnimos de memoria.
Desventajas:
1. Lento.
2. Realiza numerosas comparaciones.
Este tambin es un algoritmo lento, pero puede ser de utilidad para listas que
estn ordenadas o semiordenadas, porque en ese caso realiza muy pocos
desplazamientos.

METODO DE LA BURBUJA

Descripcin.
La idea bsica del ordenamiento de la burbuja es recorrer el conjunto
de elementos en forma secuencial varias veces. Cada paso compara un
elemento del conjunto con su sucesor (x[i] con x[i+i]), e intercambia los dos
elementos si no estn en el orden adecuado.

El algoritmo utiliza una bandera que cambia cuando se realiza algn


intercambio de valores, y permanece intacta cuando no se intercambia
ningn valor, pudiendo as detener el ciclo y terminar el proceso de
ordenamiento cuando no se realicen intercambios, lo que indica que este ya
est ordenado.
Este algoritmo es de fcil comprensin y programacin pero es poco
eficiente puesto que existen n-1 pasos y n-i comprobaciones en cada paso,
aunque es mejor que el algoritmo de ordenamiento por intercambio.
En el peor de los casos cuando los elementos estn en el orden
inverso, el nmero mximo de recorridos es n-1 y el nmero de intercambios
o comparaciones est dado por (n-1) * (n-1) = n - 2n + 1.En el mejor de los
casos cuando los elementos estn en su orden, el nmero de recorridos es
mnimo 1 y el ciclo de comparaciones es n-1.
La complejidad del algoritmo de la burbuja es O(n) en el mejor de los
casos y O(n) en el peor de los casos, siendo su complejidad total O(n).

Mtodos No Elementales:

ORDENAMIENTO POR EL MTODO DE SHELL

Descripcin.
El mtodo Shell es una versin mejorada del mtodo de insercin directa.
Este mtodo tambin se conoce con el nombre de insercin con incrementos
crecientes. En el mtodo de ordenacin por insercin directa cada elemento
se compara para su ubicacin correcta en el arreglo, con los elementos que
se encuentran en la parte izquierda del mismo. Si el elemento a insertar es
ms pequeo que el grupo de elementos que se encuentran a su izquierda,
es necesario efectuar entonces varias comparaciones antes de su ubicacin.

Shell propone que las comparaciones entre elementos se efecten con


saltos de mayor tamao pero con incrementos decrecientes, as, los
elementos quedarn ordenados en el arreglo ms rpidamente.
El Shell sort es una generalizacin del ordenamiento por insercin,
teniendo en cuenta dos observaciones:
1. El ordenamiento por insercin es eficiente si la entrada est "casi
ordenada".
2. El ordenamiento por insercin es ineficiente, en general, porque
mueve los valores slo una posicin cada vez.
El algoritmo Shell sort mejora el ordenamiento por insercin
comparando elementos separados por un espacio de varias posiciones.
Esto permite que un elemento haga "pasos ms grandes" hacia su
posicin esperada. Los pasos mltiples sobre los datos se hacen con
tamaos de espacio cada vez ms pequeos. El ltimo paso del Shell
sort es un simple ordenamiento por insercin, pero para entonces, ya est
garantizado que los datos del vector estn casi ordenados.

ORDENAMIENTO QUICK SORT

Descripcin.
El ordenamiento por particin (Quick Sort) se puede definir en una
forma ms conveniente como un procedimiento recursivo.
Tiene aparentemente la propiedad de trabajar mejor para
elementos de entrada desordenados completamente, que para elementos
semiordenados.

Esta

situacin

ordenamiento de burbuja.

es

precisamente

la

opuesta

al

Este tipo de algoritmos se basa en la tcnica "divide y vencers", o


sea es ms rpido y fcil ordenar dos arreglos o listas de datos
pequeos, que un arreglo o lista grande.
Normalmente al inicio de la ordenacin se escoge un elemento
aproximadamente en la mitad del arreglo, as al empezar a ordenar, se
debe llegar a que el arreglo este ordenado respecto al punto de divisin o
la mitad del arreglo.
Se podr garantizar que los elementos a la izquierda de la mitad
son los menores y los elementos a la derecha son los mayores.
Los siguientes pasos son llamados recursivos con el propsito de
efectuar la ordenacin por particin al arreglo izquierdo y al arreglo
derecho, que se obtienen de la primera fase. El tamao de esos arreglos
en promedio se reduce a la mitad.
As se contina hasta que el tamao de los arreglos a ordenar es
1, es decir, todos los elementos ya estn ordenados.
En promedio para todos los elementos de entrada de tamao n, el
mtodo hace O(n log n) comparaciones, el cual es relativamente eficiente.

ORDENAMIENTO POR MEZCLA

Descripcin.
Mediante el enfoque de Dividir y conquistar, este algoritmo divide el
arreglo inicial en dos arreglos donde cada uno contiene la mitad de los datos
(partes iguales mas o menos uno), y se ordenan mediante sucesivos
llamados recursivos para luego fusionar los resultados en el arreglo inicial.
Este algoritmo se basa en una funcin que permite mezclar dos
vectores ordenados, produciendo como resultado un tercer vector ordenado
que contiene los elementos de los dos vectores iniciales, el cual tiene una

complejidad de O(n) para mezclar dos arreglos, donde n es la suma de los


tamaos de los dos arreglos.
El algoritmo principal que divide el arreglo, realiza O (log2 n)
particiones y como llama a la funcin que mezcla los dos arreglos y que tiene
una complejidad de O(n), entonces la complejidad total del algoritmo ser de
O(n log2 n).

Complejidad:
Cada algoritmo de ordenamiento por definicin tiene operaciones y
clculos mnimos y mximos que realiza (complejidad), a continuacin una
tabla que indica la cantidad de clculos que corresponden a cada mtodo de
ordenamiento:
Algoritmo

Operaciones mximas

Burbuja

(n)

Insercin

(n/4)

Seleccin

(n)

Shell

(n logn)

Merge

(n logn)

Quick

(n) en peor de los casos y (n logn)


en el promedio de los casos.

4) Mtodo de Bsqueda.
La bsqueda es una operacin que tiene por objeto la localizacin de un
elemento dentro de la estructura de datos. A menudo un programador estar
trabajando con grandes cantidades de datos almacenados en arreglos y

pudiera resultar necesario determinar si un arreglo contiene un valor que


coincide con algn valor clave o buscado.
Siendo el array de una dimensin o lista una estructura de acceso directo y a
su vez de acceso secuencial, encontramos dos tcnicas que utilizan estos
dos mtodos de acceso, para encontrar elementos dentro de un array:
bsqueda lineal y bsqueda binaria.

Bsqueda Secuencial:
La bsqueda secuencial es la tcnica ms simple para buscar un
elemento en un arreglo. Consiste en recorrer el arreglo elemento a elemento
e ir comparando con el valor buscado (clave). Se empieza con la primera
casilla del arreglo y se observa una casilla tras otra hasta que se encuentra
el elemento buscado o se han visto todas las casillas. El resultado de la
bsqueda es un solo valor, y ser la posicin del elemento buscado o cero.
Dado que el arreglo no est en ningn orden en particular, existe la misma
probabilidad de que el valor se encuentra ya sea en el primer elemento,
como en el ltimo. Por lo tanto, en promedio, el programa tendr que
comparar el valor buscado con la mitad de los elementos del arreglo.
El mtodo de bsqueda lineal funciona bien con arreglos pequeos o para
arreglos no ordenados. Si el arreglo est ordenado, se puede utilizar la
tcnica de alta velocidad de bsqueda binaria, donde se reduce
sucesivamente la operacin eliminando repetidas veces la mitad de la lista
restante.
Bsqueda Binaria:
La bsqueda binaria es el mtodo ms eficiente para encontrar elementos
en un arreglo ordenado. El proceso comienza comparando el elemento

central del arreglo con el valor buscado. Si ambos coinciden finaliza la


bsqueda. Si no ocurre as, el elemento buscado ser mayor o menor en
sentido estricto que el central del arreglo. Si el elemento buscado es mayor
se procede a hacer bsqueda binaria en el subarray superior, si el elemento
buscado es menor que el contenido de la casilla central, se debe cambiar el
segmento a considerar al segmento que est a la izquierda de tal sitio
central. Si los datos que se buscan estn clasificados en un determinado
orden, el mtodo citado anteriormente se denomina bsqueda binaria.
La bsqueda binaria utiliza un mtodo de divide y vencers, para
localizar el valor deseado. Con este mtodo se examina primero el elemento
central de la lista; si ste es el elemento buscado, entonces la bsqueda ha
terminado.
En caso contrario, se determinar si el elemento buscado ser en la
primera o la segunda mitad de la lista y a continuacin se repite este
proceso, utilizando el elemento central de esa sub-lista. Se puede aplicar
tanto a datos en listas lineales como en rboles binarios de bsqueda. Los
prerrequisitos principales para la bsqueda binaria son:
La lista debe estar ordenada en un orden especfico de acuerdo al valor de
la llave.
Debe conocerse el nmero de registros.
Algoritmo:
Se compara la llave buscada con la llave localizada al centro del arreglo.
Si la llave analizada corresponde a la buscada fin de bsqueda si no.
Si la llave buscada es menor que la analizada repetir proceso en mitad
superior, sino en la mitad inferior.

El proceso de partir por la mitad el arreglo se repite hasta encontrar el


registro o hasta que el tamao de la lista restante sea cero , lo cual implica
que el valor de la llave buscada no esta en la lista.
El esfuerzo mximo para este algoritmo es de log2n. El mnimo de 1 y en
promedio log2 n.
Ventajas de la tcnica.
La bsqueda binaria es un mtodo eficiente siempre que el vector est
ordenado. En la prctica, esto suele suceder, pero no siempre. Por esta
razn la bsqueda binaria exige una ordenacin previa del archivo.
La bsqueda binaria proporciona un medio para reducir el tiempo
requerido para buscar en una lista. Este mtodo, sin embargo, exige que los
datos estn ordenados.
o Es ms rpido por su recursividad, su mayor ventaja es con los
archivos extensos.
o El cdigo del procedimiento de esta bsqueda es corto en
comparacin con las dems tcnicas de bsqueda.
o En esencia, con una sola comparacin eliminamos la mitad de la
tabla; este es el mtodo ms eficiente de buscar en una lista ordenada
sin emplear tablas o ndices adicionales.
Desventajas de la tcnica.
La bsqueda binaria tiene, sin embargo, inconvenientes a resaltar:
El archivo debe estar ordenado y el almacenamiento de un archivo ordenado
suele plantear problemas en las inserciones y eliminaciones de elementos.
No revisa todos los elementos del archivo, requiere que todos los elementos
estn ordenados.

CONCLUSIN
Segn lo observado decimos que, en las condiciones anteriormente
mencionadas, el mtodo de Burbujas es aqul con mayor tiempo de
ejecucin a medida que el valor de N se incrementa, con lo cual se ve que es
el ms ineficiente de todos, pero cabra cuestionarse aqu porque es el
mtodo ms utilizado, y la respuesta estara en la fcil comprensin del
mismo, tanto en la codificacin como en su forma de ordenacin. Si bien con
los mtodos de Insercin y Seleccin se nota una mejora en los tiempos de
ejecucin, es el mtodo Shell quien presenta el mejor rendimiento debido a
que es una modificacin de los mtodos de Insercin y Seleccin, ya que
realiza saltos grandes que permiten ordenaciones mltiples. Esto se ve
claramente demostrado en las pruebas de tiempo.
Ahora bien todo cambia cuando hablamos de los mtodos Quick Sort
y Counting Sort, claramente se observa que ambos en prueba de tiempo son
altamente eficientes y rpidos en comparacin al resto. Pero hay que hacer
una salvedad, dndose cuenta la propia limitacin que posee el Counting
Sort de que solamente ordena nmeros enteros positivos, y lo favorable que

es el Quick Sort que puede ordenar cualquier elemento que integre la lista o
el vector.

BIBLIOGRAFA

http://iutprogramacion.blogspot.com/2013/02/metodos-de-

ordenamiento.html
http://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento.Fecha de

Consulta: 06/02/2015
Jorge Prez Ph. D. Student Department of Computer Science.

Pontificia Universidad Catlica de Chile


ALGORITMOS DE ORDENACIN Y BSQUEDA CAPITULO 6

http://novella.mhhe.com/sites/dl/free/844814077x/619434/A06.pdf.
Fecha de Consulta: 06/02/2015
Julio Csar Lpez. Ordenamiento en Tiempo Lineal.

http://ocw.univalle.edu.co/ocw/ingenieria-de-sistemas-telematicayafines/fundamentos-de-analisis-y-disenodealgoritmos/material/ordenamiento2.pdf Fecha de Consulta:


07/02/2015
Arturo Daz Prez. Anlisis y Complejidad de Algoritmos.

http://es.scribd.com/doc/12397882/Metodos-de-to. Fecha de Consulta:


07/02/2015

Javier Gutirrez, Michael Gonzlez. Parte II: Estructuras de Datos y

Algoritmos. UNIVERSIDAD DE CANTABRIA FACULTAD DE


CIENCIAS. http://www.ctr.unican.es/asignaturas/lan/algoritmos2en1.pdf Fecha de Consulta: 08/02/2015
Luis E. Vargas Azcona. Problemas y Algoritmos.

http://lobishomen.files.wordpress.com/2011/01/libropre3.pdf. Fecha de
Consulta: 08/02/2015
Fernando A. Lagos B. Algoritmos de Ordenamiento Informe de

Ordenamiento. Ao 2007.
http://blog.zerial.org/ficheros/Informe_Ordenamiento.pdf. Fecha de
Consulta: 09/02/2015

S-ar putea să vă placă și