You are on page 1of 12

Escuela Militar de Ingeniera

Mcal. Antonio Jos de Sucre

Unidad Acadmica Santa Cruz

GRUPO : WILLY CALVIMONTES PADILLA


FERNANDO CARDOZO CASTAO
SBTTE. CAB. PABLO MARTINEZ
BRENDA MANSILLA CANIDO

SEMESTRE : 1 SEMESTRE

TEMA : MTODOS DE ORDENACIN Y


BUSQUEDA DE VECTORES.

DOCENTE : ING. KAREN CORRALES HERGUERO.

Santa Cruz, 06 / 06 / 2013

MTODOS DE ORDENACIN Y

Algoritmos y Mtodos de Programacin


BSQUEDA DE VECTORES

Los mtodos de ordenamiento son algoritmos necesarios para que luego


de ordenar, se puedan buscar datos de una manera mucho ms rpida y
eficiente aplicando distintas tcnicas. Existen varios mtodos de
bsqueda y ordenacin de vectores que varan segn su grado de
dificultad y su facilidad de uso, sin embargo, todos estos son aplicados
en cualquier caso: 2

MTODOS DE ORDENACIN

La ordenacin de arrays (arreglos) o vectores, se denomina tambin


ORDENACION INTERNA; ya que se almacena en la memoria interna de la
computadora de gran velocidad y acceso aleatorio. Los mtodos de
ordenacin se dividen en dos categoras:

Ordenacin de vectores, tablas; este tipo de ordenacin es


denominado ORDENACION INTERNA: clasificacin de los valores de un
vector segn el orden de memoria central, rpida.

Ordenacin de archivos; tambin denominado ORDENACION


EXTERNA: clasificacin de los registros de un archivo situado en un
soporte externo, menos rpido.

Ordenacin interna.
Se lleva a cabo completamente en memoria principal, es
decir, todos los objetos que se ordenan caben en la memoria
principal de la computadora.
Ordenacin externa.
No cabe toda la informacin en memoria principal y es
necesario ocupar memoria secundaria. El ordenamiento
ocurre transfiriendo bloques de informacin a memoria

Algoritmos y Mtodos de Programacin


principal en donde se ordena el bloque y este es regresado,
ya ordenado, a la memoria secundaria.
Los mtodos directos de ordenacin son:
Mtodo de intercambio de burbuja.
Mtodo por insercin.
Mtodo de seleccin.
Mtodo de Shell.
Mtodo de Quicksort.
Mtodo de Megasort.
3

Mtodo de Burbuja: El Ordenamiento de Burbuja (Bubble Sort en


ingls) es un sencillo algoritmo de ordenamiento. Funciona
revisando cada elemento de la lista que va a ser ordenada con el
siguiente, intercambindolos de posicin si estn en el orden
equivocado. Es necesario revisar varias veces toda la lista hasta
que no se necesiten ms intercambios, lo cual significa que la lista
est ordenada. Este algoritmo obtiene su nombre de la forma con
la que suben por la lista los elementos durante los intercambios,
como si fueran pequeas "burbujas".
Dado que solo usa comparaciones para operar elementos, se lo
considera un algoritmo de comparacin, siendo el ms sencillo de
implementar. Consiste en comparar pares de elementos
adyacentes e intercambiarlos entre s hasta que estn todos
ordenados.

Ejm:

Se desea clasificar el orden ascendente la lista o vector:

50 15 56 14 35 1 12 9

A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Los pasos a dar son:

Algoritmos y Mtodos de Programacin


1. Comparar A1 y A2; si estn en orden, se mantiene como estn,
sino se intercambian entre s.
2. Se comparan los elementos 2 y 3, se intercambian si es necesario.
3. El proceso continua hasta que cada elemento del vector haya sido
comparado con sus elementos adyacentes y se hayan realizado los
intercambios necesarios.

Este mtodo expresado en pseudocdigo seria as:

Desde I hasta 7 hacer 4

Si elemento [I] > elemento [I+1] entonces

Intercambiar (elemento [I], elemento [I+1])

Fin_si

Fin_desde

Cada operacin exige como mnimo n-1 comprobaciones y como


mximo n-1 intercambios. La operacin total exigir (n-1)*(n-1)=(n-1)^2
intercambios de elementos.

Mtodo de Insercin: En este mtodo lo que se hace es tener


una sublista ordenada de elementos del arreglo e ir insertando el
resto en el lugar adecuado para que la sublista no pierda el orden.
La sublista ordenada se va haciendo cada vez mayor, de modo
que al final la lista entera queda ordenada. Se lo conoce tambin
como el mtodo de la baraja. Este mtodo se basa en
comparaciones y desplazamientos sucesivos. El algoritmo de
clasificacin de un vector x para N elementos se realiza con un
recorrido de todo el vector y la insercin del elemento
correspondiente en el lugar adecuado. El recorrido se realiza desde
el segundo elemento al n-simo.

Algoritmos y Mtodos de Programacin


El pseudocdigo de algoritmos se representara de la siguiente
manera:

Desde i hasta n hacer


//insertar x [i] en el lugar
//adecuado entre x [1] x [i-1]
Fin_desde

Mtodo de Seleccin: Este mtodo consiste en buscar el


elemento ms pequeo del arreglo y ponerlo en primera posicin;
5
luego, entre los restantes, se busca el elemento ms pequeo y se
coloca en segundo lugar, y as sucesivamente hasta colocar el
ltimo elemento. Los pasos sucesivos a dar son:
1. Seleccionar el elemento menor de n elementos.
2. Intercambiar dicho elemento con el primero.
3. Repetir estas operaciones con los n-1 elementos restantes,
seleccionando el segundo elemento, continuar con los n-2
elementos restantes hasta que solo quede el mayor.

Ejm:

Inicio

Desde I 1 hasta n-1 hacer

Buscar el elemento menor de x [I], . . . , x [n] e


intercambiar con x [I]

Fin_desde

Fin

La bsqueda e intercambio se realiza n 1 veces, ya que I se incrementa


al final del bucle. Tambin se pueden aplizar als estructuras repetitivas
mientras y repetir mientras en este mtodo.

Mtodo Shell: Es una mejora del mtodo de insercin directa,


utilizado cuando el arreglo tiene un gran nmero de elementos,

Algoritmos y Mtodos de Programacin


llamado as por su inventor Donald Shell. En este mtodo no se
compara a cada elemento con el de su izquierda, como en el de
insercin, sino con el que est a un cierto nmero de lugares
(llamado salto) a su izquierda. Este salto es constante, y su valor
inicial es N/2 (siendo N el nmero de elementos, y siendo divisin
entera). Se van dando pasadas hasta que en una pasada no se
intercambie ningn elemento de sitio. Entonces el salto se reduce
a la mitad, y se vuelven
6 a dar pasadas hasta que no se
intercambie ningn elemento, y as sucesivamente hasta que el
salto vale 1.

Mtodo QuickSort de Ordenacin Rpida: Una tcnica muy


poderosa para el diseo de algoritmos es "Dividir para conquistar".
Este mtodo se le debe estrictamente a Hoare .Los algoritmos de
este tipo se caracterizan por estar diseados siguiendo
estrictamente las siguientes fases:

Dividir: Se divide el problema en partes ms pequeas.


Conquistar: Se resuelven recursivamente los problemas
ms chicos.
Combinar: Los problemas ms chicos de combinan para
resolver el grande.

Los algoritmos que utilizan este principio son en la mayora de los


casos netamente recursivos como es el caso de mergesort.

El algoritmo de Mergesort es un ejemplo clsico de algoritmo que


utiliza el principio de dividir para conquistar. Si el vector tiene ms
de dos elementos se lo divide en dos mitades, se invoca
recursivamente al algoritmo y luego se hace una intercalacin de
las dos mitades ordenadas.

Algoritmos y Mtodos de Programacin


El primer paso es dividir las listas en dos sublistas o subvectores y
un valor de separacin, siend o el vector dividido en 3 partes:
1. Subvector VI, que contiene los valores inferos o iguales.
2. El elemento de separacin.
3. Subvector VD, que contiene los elementos superiores o
iguales.

Los subvectores VI y VD no estn ordenados, pero se pueden


ordenar independientemente basados en la primera particin,
7
consistente en ordenar los vectores en base al elemento de
separacin, ordenando los valores mayores ala derecha y los
valores menores a la izquierda.

Mtodo MergeSort: Este mtodo se basa en la tctica "divide y


vencers", que consiste en ir subdividiendo el arreglo en arreglos
ms pequeos, y ordenar stos. Para hacer esta divisin, se toma
un valor del arreglo como pivote, y se mueven todos los elementos
menores que este pivote a su izquierda, y los mayores a su
derecha. A continuacin se aplica el mismo mtodo a cada una de
las dos partes en las que queda dividido el arreglo. Normalmente
se toma como pivote el primer elemento de arreglo, y se realizan
dos bsquedas: una de izquierda a derecha, buscando un
elemento mayor que el pivote, y otra de derecha a izquierda,
buscando un elemento menor que el pivote. Cuando se han
encontrado los dos, se intercambian, y se sigue realizando la
bsqueda hasta que las dos bsquedas se encuentran.

METODOS DE BSQUEDA

la bsqueda de informacin est relacionada con las tablas para


consultas que contienen informacin que se almacena en forma de
listas de parejas de datos. Una vez se encuentra el elemento, la
identificacin de su informacin es un problema menor. La bsqueda se
puede clasificar en :

Algoritmos y Mtodos de Programacin


Bsqueda externa: es cuando la informacin es almacenada en disceos o
citnas fuera del ordenador.

Bsqueda interna: es cuando los registros que se buscan se almacenan


por completo dentro de la memoria del ordenador.

Los mtodos ms usuales de busque da son :

Bsqueda secuencial o lineal.


Bsqueda binaria. 8
Bsqueda por transformacin de claves (hash).
Mtodo de Bsqueda secuencial: En una lista de elementos
almacenada en un vector, el mtodo ms sencillo es explorar
secuencialmente el vector, en otras palabras recorrer el vector. La
bsqueda secuencial compara cada elemento del vector con el
valor deseado, hasta que este termina de leer el vector completo.
Esta bsqueda no requiere de ningn registro por parte del vector
y no necesita estar ordenado. El recorrido del vector normalmente
se realiza con estructuras repetitivas (Para, Mientras controlado
por un centinela, Mientras controlado por un contador).

Ejm:

//declaraciones

Inicio

Llenar (a,n)

Leer t

// recorrido del vector

Desde I 1 hasta n hacer

Si A [I] = t entonces

Mostrar (elemento encontrado)

Algoritmos y Mtodos de Programacin


Mostrar (en posicin , 1)

Fin_si

Fin_desde

Fin

Bsqueda secuencial con centinela

9
Esta es una manera muy eficaz siempre con xito en la bsqueda
del registro en el vector utilizando un centinela, elemento que se agrega
al vector al final del mismo. Para el xito en la bsqueda se le asigna el
valor de t antes de iniciar la bsqueda.

Ejm:

//declaraciones

Inicio

Llenar (a,n)

Leer t

i1

Mientras a [n+1] <> t hacer

i=i+1

fin_mientras

si i = n + 1 entonces

mostrar (no se ha encontrado el elemento)

fin_si

sino

Algoritmos y Mtodos de Programacin


mostrar (se ha encontrado el elemento)

fin_sino

Fin

Mtodo de Bsqueda binaria: Esta bsqueda secuencial


empieza con el primer elemento
10 del vector y se busca en el hasta
que se encuentra el elemento deseado o se alcanza el valor final
del vector. Se llama as debido a que los datos a buscar estn
ordenados. Se basa en el lema DIVIDE Y VENCERS para
localizar el valor deseado. Con este mtodo se examina primero el
elemento central de la lista, si este es el elemento buscado
entonces la bsqueda llega a su fin; si no se determina si el
elemento buscado est en la primera o la segunda mitad de la
lista y a continuacin se repite el proceso utilizando el elemento
central de las sublistas. En la bsqueda binaria se utilizan vectores
ordenados y se basa en la constante divisin del espacio de
bsqueda. El proceso de bsqueda debe terminar con los
resultados de la bsqueda, si ha tenido xito; caso contrario no ha
tenido xito, y normalmente se devuelve la posicin del elemento
buscado dentro del vector. Esta bsqueda binaria es siempre
eficiente cuando el vector esta ordenado. Para poder medir la
velocidad del clculo del algoritmo se debe obtener el numero de
comparaciones que realiza el algoritmo, genricamente se
representa de la siguiente manera:

n de comparaciones = log (2) (n + 1)

k = log (2) (n + 1)

Algoritmos y Mtodos de Programacin


Los inconvenientes de la bsqueda binaria son : el vector
previamente debe estar ordenado y el almacenamiento de un
vector ordenado suele ocasionar problemas en las inserciones y
eliminaciones de elementos.

11

Mtodo de Bsqueda mediante transformacin de claves


(HASHING): Este mtodo exige que los datos en el vector estn
ordenados. Este mtodo consiste en transformar una clave dada
(numrica o alfabtica) en una direccin (un ndice) dentro del
vector (array). La correspondencia entre las claves y la direccin
en el medio de almacenamiento o en el vector se establece por
una funcin de conversin. Existen diversos mtodos de
transformacin de claves, cada uno con la necesidad de convertir
las claves en direcciones; la funcin de conversin equivale a una
caja negra llamada calculador de direcciones, el cual indica la
direccin el elemento a encontrar dentro del vector; algunos de
estos mtodos son:
Truncamiento.
Este mtodo ignora parte de la clave y se utiliza parte de ella
como ndice, este es un mtodo rpido, pero falla al distribuir
las claves de modo uniforme. Toma solo una determinada
cantidad de dgitos y de determinadas posiciones de la clave
para tomarla como ndice.
Plegamiento.
Consiste en la particin de la clave en distintas partes y la
combinacin de estas de modo conveniente (usando a
menudo suma o multiplicacin) para obtener el ndice.

Algoritmos y Mtodos de Programacin


H (x) = x1 + x2 + . . . + xn
Aritmtica modular.
Consiste en convertir la clave aun entero, dividir por el
tamao del rango del ndice y tomar el resto como resultado;
la funcin utilizada es mod (modulo).
H (x) = x mod m
m=tamao del vector.
Mitad del cuadrado.

Consiste en calcular el cuadrado de la clave x. La funcin de


12
conversin de define como:

H (x) = C

c= s obtiene eliminando los dgitos de los extremos de x^2.

Se deben utilizar las mismas posiciones para x^2 para todas


las claves.

BIBLIOGRAFIA:

http://kathyabetsabe.blogspot.com/2008/10/metodos-de-
ordenamiento-de-vectores.html

http://artemisa.unicauca.edu.co/~nediaz/EDDI/cap03.htm

http://www2.ing.puc.cl/~iic11021/materia/cap14.htm

FUNDAMENTOS DE PROGRAMACION Luis Joyanes Aguilar / 4


Edicin

Algoritmos y Mtodos de Programacin

You might also like