0% encontró este documento útil (0 votos)
44 vistas

Informe de Programacion

Este documento describe diferentes métodos de ordenamiento y búsqueda de datos, incluyendo métodos secuenciales, binarios, por selección, inserción, shell y por mezcla. Explica conceptos como claves de ordenamiento, orden ascendente y descendente. También distingue entre ordenamientos internos y externos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
44 vistas

Informe de Programacion

Este documento describe diferentes métodos de ordenamiento y búsqueda de datos, incluyendo métodos secuenciales, binarios, por selección, inserción, shell y por mezcla. Explica conceptos como claves de ordenamiento, orden ascendente y descendente. También distingue entre ordenamientos internos y externos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 19

Pimentel Chiclayo

FACULTAD DE ARQUITECTURA, INGENIERIA Y URBANISMO


ESCUELA PROFESIONAL DE INGENIERIA DE SISTEMAS

ASIGNATURA

:
Fundamentos de Programacin

DOCENTE

:
Rosa Amrica

ALUMNO

:
MUOZ SEGURA Luis Enrique

CICLO

:
I

Aula

:
Lab N 20

Turno

:
Maana

Pimentel 23 de octubre del 2015

Contenido
I.
MARCO TEORICO:........................................................................................... 4
MTODOS DE BSQUEDA:........................................................................... 4
Tipos de mtodos de bsqueda:....................................................................4
Mtodo de bsqueda secuencial:..................................................................4
Mtodo de bsqueda binaria:........................................................................4
Mtodos de ordenamiento:...........................................................................5
Tipos de ordenamiento:................................................................................ 6
1.2 ORDENAMIENTO INTERNO:.....................................................................6
1.2.1 Ordenamiento por intercambio (burbuja):................................................7
1.2.2 Algoritmo de burbuja mejorado:.............................................................7
1.3 MTODO DE SELECCIN:........................................................................8
1.4 MTODO DE INSERCIN:........................................................................8
1.5 ORDENACIN SHELL:............................................................................. 9
1.6 ORDENAMIENTO POR MEZCLA (MERGE SORT)......................................10
1.7 Ordenacin por particin e intercambio (Quick Sort):....................................11
1.7 Ordenacin basada en comparaciones (Heap Sort):....................................13
ORDENAMIENTO EXTERNO:.......................................................................13
1.2.1 Ordenacin por mezcla directa:...........................................................14
1.2.2 Ordenacin por mezcla equilibrada:.....................................................14
2. EJEMPLOS:................................................................................................ 15
3. CONCLUSIONES........................................................................................ 16
Bibliografa:.................................................................................................... 17

Resumen:

La operacin de ordenar consisten seleccionar de un conjunto de datos y


ordenarlos bajo algn determinado criterio. Por ejemplo, cada elemento del
conjunto de datos de una gua telefnica tiene un nombre, una direccin y un
nmero de telfono; la gua telefnica est dispuesta en orden alfabtico de
nombres; los elementos numricos se pueden ordenar en orden creciente o
decreciente de acuerdo al valor numrico del elemento. En terminologa de
ordenacin, el elemento por el cual esta ordenado un conjunto de datos (o se
est buscando) se denomina clave.
Una coleccin de datos (estructura) puede ser almacenada por ejemplo en un
array (vector o tabla). Una estructura se dice que esta ordenada por la clave k
si la lista est en orden ascendente o descendente con respecto a esta clave.
La coleccin de datos se dice que est en orden ascendente si: i <
jimplicaquek[i] <=k[j]. En cambio, est en orden descendente si: i >
jimplicaquek[i] <= k[j] para todos los elementos de la coleccin.

MARCO TEORICO:
MTODOS DE BSQUEDA:
Los mtodos de bsqueda nos permiten recuperar informacin de un
vector o un archivo, que contenga una lista de datos. Por ejemplo se
puede obtener el nombre y el nmero telefnico de nuestra agenda de
contactos o la nota obtenida por un alumno en la lista de un curso.
Cuando se realizan bsquedas sobre vectores, se desea es encontrar la
posicin que ocupa el elemento buscado dentro de la lista de elementos
que contiene el vector. Para la bsqueda de informacin en archivos es
necesario realizar la bsqueda a partir de un campo clave dentro del
archivo. Existen diferentes mtodos de bsqueda y se puede determinar
con cual mtodo trabajar dependiendo de la cantidad de elementos que
existan en el vector o la organizacin de dichos elementos.
Tipos de mtodos de bsqueda:
Mtodo de bsqueda secuencial:
Este mtodo se usa para buscar un elemento de un vector, es
explorar secuencialmente el vector, es decir; recorrer el vector desde
el prior elemento hasta el ltimo. Si se encuentra el elemento
buscado se debe visualizar un mensaje similar a Fin de Bsqueda
o Elemento encontrado y otro que diga posicin= en caso
contrario, visualizar un mensaje similar a Elemento no existe en la
Lista.
Este tipo de bsqueda compara cada elemento del vector con el
valor a encontrar hasta que este se consiga o se termine de leer el
vector completo.
Mtodo de bsqueda binaria:
Es un mtodo que se basa en la divisin sucesiva del espacio
ocupado por el vector en sucesivas mitades, hasta encontrar el
elemento buscado.

Esta bsqueda 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 este es el elemento buscado entonces
la bsqueda ha terminado. En caso contrario se determina si el
elemento buscado est en la primera o segunda mitad de la lista y a
continuacin se repite el proceso anterior, utilizando el elemento
central de esta sublista. Este tipo de bsqueda se utiliza en vectores
ordenados.
Mtodos de ordenamiento:
Debido a que las estructuras de datos son utilizadas para
almacenar

informacin,

para

poder

recuperar

esa

informacin de manera eficiente es deseable que aquella


est ordenada. Existen varios mtodos para ordenar las
diferentes estructuras de datos bsicas.
En general los mtodos de ordenamiento no son utilizados
con frecuencia, en algunos casos slo una vez. Hay mtodos
muy simples de implementar que son tiles en los casos en
dnde el nmero de elementos a ordenar no es muy grande
(ej, menos de 500 elementos). Por otro lado hay mtodos
sofisticados, ms difciles de implementar pero que son ms
eficientes en cuestin de tiempo de ejecucin.

Los

mtodos

sencillos

por

lo

general

requieren

de

aproximadamente n x n pasos para ordenar n elementos.

Los mtodos simples son: insertion sort (o por insercin


directa) selection sort, bubble sort, y shellsort, en dnde el
ltimo es una extensin al insertion sort, siendo ms rpido.
Los mtodos ms complejos son el quick-sort, el heap sort,
radix y address-calculation sort. 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.

Se

ha

dicho

que

el

ordenamiento

puede

efectuarse

moviendo los registros con las claves. El mover un registro


completo implica un costo, el cual se incrementa conforme
sea mayor el tamao del registro. Es por ello que es
deseable evitar al mximo el movimiento de los registros.
Una alternativa es el crear una tabla de referencias a los
registros y mover las referencias y no los datos. A
continuacin se mostrarn los mtodos de ordenamiento
empezando por el ms sencillo y avanzando hacia los ms
sofisticados
La eficiencia de los algoritmos se mide por el nmero de
comparaciones e intercambios que tienen que hacer, es
decir, se toma n como el nmero de elementos que tiene el
arreglo a ordenar y se dice que un algoritmo realiza O(n2)
comparaciones cuando compara n veces los n elementos, n
x n = n2.
Tipos de ordenamiento:
La ordenacin o clasificacin de datos consiste en la disposicin de
los mismos de acuerdo con algn valor o caracterstica. Por ejemplo,
cada elemento de una agenda telefnica tiene un campo nombre, un
campo direccin y un campo nmero telefnico. Por lo regular los
datos en la agenda se encuentran organizados en un orden de la A la
Z. De la misma forma un lista vector de datos se dice que esta
ordenado de manera ascendente, si X [ i ] <= X [ i +1] y, por otro
lado, se dice que esta ordenado de manera descendente s X [ i ] >=
X [ i +1].

El proceso de ordenacin es uno de los mecanismos ms


interesantes cuando llega el momento de mostrar que existen
mltiples soluciones para un mismo problema, y que cada solucin
algortmica tiene sus propias ventajas y desventajas.
Una forma de medir la eficiencia de un algoritmo de esta clase, es
verificar el nmero de comparaciones entre valores clave, adems
del nmero de movimientos que se tengan que realizar entre
elementos (intercambios) de la lista.
Los mtodos de ordenamiento que trabajan con estructuras de datos
residentes en memoria principal se denominan Ordenamientos
Internos, mientras que las implementaciones que utilizan estructuras
de datos residentes en archivos se conocen como Ordenamientos
externos.

1.2 ORDENAMIENTO INTERNO:


Los mtodos de ordenamiento interno trabajan en memoria principal y
sus implementaciones son muy variadas, de manera que la eleccin del
algoritmo adecuado debe realizarse con criterios de eficiencia (tiempo y
ejecucin) y en funcin de la memoria disponible. Dividiremos los
mtodos en dos grandes grupos:

Directos (burbuja, seleccin e insercin).


Logartmicos (Shell sort, Merge sort, Heap sort, Quick sort, Radix).
En el caso de listas pequeas, los mtodos directos se desempean de
manera relativamente eficientes, ya que la codificacin del algoritmo
correspondiente no es compleja. Su uso es muy frecuente. Sin embargo,
en arreglos grandes las ordenaciones directas resultan ineficientes y se
necesitara un mtodo logartmico para su solucin.

1.2.1 Ordenamiento por intercambio (burbuja):


Es uno de los mtodos relativamente ms sencillo e intuitivo, pero
tambin resulta ser muy ineficiente. Se basa en la ordenacin por
cambio, y recibe su nombre de la semejanza con las burbujas de
un depsito de agua donde cada burbuja busca su propio nivel.
1.2.2 Algoritmo de burbuja mejorado:
Existe una versin mejorada de dicho algoritmo en donde se
integra una variable que funge como switch (bandera) que permite
detectar el momento en que ya no se presenten ms intercambios
aunque su mejora no suele ser tan importante pues el algoritmo
sigue comportndose como una ordenacin cuadrtica O(n2).
voidburbuja(int*v,intn)/***cdigoenC++***/
{
boolsw=true;
intli=0;
do{
li++;
sw=true;
for(inti=0;i<nli;i++){
if(v[i]>v[i+1]){//comparalosvalores
//intercambialosdatos
inttem=v[i];
v[i]=v[i+1];
v[i+1]=tem;
sw=false;
}
}
}while(!sw);
}

1.3 MTODO DE SELECCIN:


La idea bsica es encontrar el elemento ms pequeo (grande), en
orden ascendente de la lista, e intercambiarlo con el elemento que ocupa
la primera posicin en la lista, a continuacin se busca el siguiente
elemento ms pequeo y se transfiere a la segunda posicin. Se repite
el proceso hasta que el ltimo elemento ha sido transferido a su posicin
correcta.

El algoritmo de ordenacin depende a su vez del algoritmo necesario


para localizar el componente mayor (menor) de un array. Es un proceso
muy similar al mtodo de la burbuja pero haciendo ms eficiente la
bsqueda y evitando intercambios innecesarios.
voidseleccion(int*v,intn)/***cdigoenC++***/
{
/*ordenamientodeseleccion*/
for(inti=0,j=0,k=0;i<n1;i++){
k=i;
for(j=i+1;j<n;j++)
if(v[k]>v[j])
k=j;
inttem=v[i];
v[i]=v[k];
v[k]=tem;
}
}

1.4 MTODO DE INSERCIN:


Este mtodo tambin se denomina mtodo del jugador de cartas, por la
semejanza con la forma de clasificar las cartas de una baraja, insertando
cada carta en el lugar adecuado.
El algoritmo ordena los dos primeros elementos de la lista, a
continuacin el tercer elemento se inserta en la posicin que
corresponda, el cuarto se inserta en la lista de tres elementos, y as
sucesivamente. Este proceso continua hasta que la lista este totalmente
ordenada.

voidinsercion(int*v,intn)/***cdigoenC++***/
{
/*ordenamientodeinsercion*/
for(inti=1,j=0;i<n;i++){
inttem=v[i];
j=i1;
while(j>=0&&tem<v[j]){
v[j+1]=v[j];
j;
}

v[j+1]=tem;
}
}

1.5 ORDENACIN SHELL:


Shell sort lleva este nombre en honor a su inventor, Donald Shell, que lo
public en 1959. La idea bsica de este mtodo es distribuir el arreglo de
manera que se genere una matriz de valores donde cada elemento es
comparado de manera adyacente empleando un mecanismo de
insercin directa simple, dicho rango que genera grupos de manera
matricial que es reducido gradualmente hasta estabilizarse en un valor
uniforme de 1.
En el mtodo de ordenacin por insercin directa es empleado en cada
sub grupo de manera que cada elemento se compara para su ubicacin
correcta en el arreglo con los elementos que se encuentran en su parte
izquierda. Si el elemento a insertar es ms pequeo que el grupo de
elementos que se encuentran a su izquierda, ser necesario efectuar
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
quedaran ordenados ms rpidamente.
El algoritmo para Shell sort sera el siguiente. Algunos autores suponen
una secuencia geomtrica de decremento (2.2) que permite una
distribucin presumiblemente ms razonable para el acomodo de los
grupos de elementos a comparar. El algoritmo emplea un arreglo a de 0
a n-1:

inc = round(n/2)
mientras inc > 0 {
para i = inc hasta n 1 {
temp = a[i]
j=i
mientras j = inc && a[j - inc] > temp {
a[j] = a[j - inc]
j = j inc
}

a[j] = temp
}
inc = round(inc / 2.2)
}

1.6 ORDENAMIENTO POR MEZCLA (MERGE SORT)

Fue desarrollado en 1945 por John Von Neumann. Conceptualmente, el


ordenamiento por mezcla funciona de la siguiente manera:
1. Si la longitud de la lista es 0 1, entonces ya est ordenada. En otro
caso:
2. Dividir la lista desordenada en dos sublistas de aproximadamente la
mitad del tamao.
3. Ordenar cada sablista recursivamente aplicando el ordenamiento por
mezcla.
4. Mezclar las dos sublistas en una sola lista ordenada.
El ordenamiento por mezcla incorpora dos ideas principales para mejorar
su tiempo de ejecucin:

Una lista pequea necesitar menos pasos para ordenarse que


una lista grande.

Se necesitan menos pasos para construir una lista ordenada a


partir de dos listas tambin ordenadas, que a partir de dos listas
desordenadas. Por ejemplo, slo ser necesario entrelazar cada
lista una vez que estn ordenadas.

1.7 Ordenacin por particin e intercambio (Quick Sort):


Es un algoritmo relativamente eficiente y representa una mejora
sustancial al mtodo de intercambio directo.

El algoritmo es el siguiente:
1. Elegir un elemento de la lista de elementos a ordenar (pivote).
2. Resituar los dems elementos de la lista a cada lado del pivote, de
manera que a un lado queden todos los menores que l, y al otro los
mayores.
Los elementos iguales al pivote pueden ser colocados tanto a su
derecha como a su izquierda, dependiendo de la implementacin
deseada. En este momento, el pivote ocupa exactamente el lugar que le
corresponder en la lista ordenada.
2. La lista queda separada en dos sub-listas, una formada por los
elementos a la izquierda del pivote, y otra por los elementos a su
derecha.
3. Repetir este proceso de forma recursiva para cada sub-lista mientras
stas contengan ms de un elemento. Una vez terminado este
proceso todos los elementos estarn ordenados.

Como se puede suponer, la eficiencia del algoritmo depende de la


posicin en la que termine el pivote elegido. En el mejor caso, el pivote
termina en el centro de la lista, dividindola en dos sublistas de igual
tamao. En este caso, el orden de complejidad del algoritmo es O(n log
n).
En el peor caso, el pivote termina en un extremo de la lista. El orden de
complejidad del algoritmo es entonces de O (n). El peor caso depender
de la implementacin del algoritmo, aunque habitualmente ocurre en
listas

que

se

principalmente

encuentran
depende

del

ordenadas,
pivote,

o
por

casi

ordenadas.

ejemplo

el

Pero

algoritmo

implementado toma como pivote siempre el primer elemento del arreglo,


y el arreglo que le pasamos est ordenado, siempre va a generar a su
izquierda un arreglo vaco, lo que es ineficiente.

Ordenacin basada en comparaciones (Heap Sort).


Es una variante del algoritmo de seleccin, El ordenamiento por
montculos (Heap sort) es un algoritmo de ordenacin no recursivo, no
estable, con complejidad computacional O(n log n).
Este algoritmo consiste en almacenar todos los elementos del vector a
ordenar en un montculo (heap), y luego extraer el nodo que queda como
nodo raz del montculo (cima) en sucesivas iteraciones obteniendo el
conjunto ordenado. Basa su funcionamiento en una propiedad de los
montculos, por la cual, la cima contiene siempre el menor elemento (o el
mayor, segn se haya definido el montculo) de todos los almacenados
en l.
El significado de heap en computacin es el de una cola de prioridades
(priority queue). Tiene las siguientes caractersticas:

Un heap es un arreglo de n posiciones ocupado por los elementos


de la cola.

Se mapea un rbol binario de tal manera en el arreglo que el nodo


en la posicin i es el padre de los nodos en las posiciones (2*i) y
(2*i+1).

El valor en un nodo es mayor o igual a los valores de sus hijos. Por


consiguiente, el nodo padre tiene el mayor valor de todo su
subrbol.

1.7 Ordenacin basada en comparaciones (Heap Sort):

Es una variante del algoritmo de seleccin, El ordenamiento por


montculos (Heap sort) es un algoritmo de ordenacin no recursivo, no
estable, con complejidad computacional O(n log n).
Este algoritmo consiste en almacenar todos los elementos del vector a
ordenar en un montculo (heap), y luego extraer el nodo que queda como
nodo raz del montculo (cima) en sucesivas iteraciones obteniendo el
conjunto ordenado. Basa su funcionamiento en una propiedad de los
montculos, por la cual, la cima contiene siempre el menor elemento (o el
mayor, segn se haya definido el montculo) de todos los almacenados
en l.
El significado de heap en computacin es el de una cola de prioridades
(priority queue). Tiene las siguientes caractersticas:

Un heap es un arreglo de n posiciones ocupado por los elementos de


cola.

Se mapea un rbol binario de tal manera en el arreglo que el nodo en


la posicin i es el padre de los nodos en las posiciones (2*i) y (2*i+1).

El valor en un nodo es mayor o igual a los valores de sus hijos. Por


consiguiente, el nodo padre tiene el mayor valor de todo su subrbol.

ORDENAMIENTO EXTERNO:
La ordenacin de archivos se lleva a cabo cuando el volumen de los
datos a tratar es demasiado grande y los mismos no caben en la
memoria principal de la computadora.
Al ocurrir esta situacin no pueden aplicarse los mtodos de ordenacin
interna, de modo que debe pensarse en otro tipo de algoritmos para
ordenar datos almacenados en archivos.
Por ordenacin de archivos se entiende, entonces, la ordenacin o
clasificacin de stos, ascendente o descendentemente, de acuerdo con
un campo determinado al que se denominar campo clave. La principal
desventaja de esta ordenacin es el tiempo de ejecucin, debido a las
sucesivas operaciones de entrada y salida.

Los dos mtodos de ordenacin externa ms importantes son los


basados en la mezcla directa y en la mezcla equilibrada.

1.2.1 Ordenacin por mezcla directa:


El mtodo de ordenacin por mezcla directa es probablemente el
ms utilizado por su fcil comprensin.
La idea central de este algoritmo consiste en la realizacin sucesiva
de una particin y una fusin que produce secuencias ordenadas de
longitud cada vez mayor. En la primera pasada la participacin es de
longitud 1 y la fusin o mezcla produce secuencias ordenadas de
longitud 4.
Este proceso se repite hasta que la longitud de la secuencia para la
particin sea mayor o igual que la longitud de la secuencia para la
particin sea mayor o igual que el nmero de elementos del archivo
original.
Supngase que se desean ordenar las claves del archivo F. Para
realizar tal actividad se utilizan dos archivos auxiliares a los que se
les denominar F1 y F2.

1.2.2 Ordenacin por mezcla equilibrada:


El mtodo de ordenacin por mezcla equilibrada, conocido
tambin con el nombre de mezcla natural, es una optimizacin del
mtodo de mezcla directa.
La idea central de este mtodo consiste en realizar las particiones
tomando secuencias ordenadas de mxima longitud en lugar de
secuencias de tamao fijo previamente determinadas. Luego
realiza la fusin de las secuencias ordenadas, alternativamente
sobre dos archivos aplicando estas acciones en forma repetida se
lograra que el archivo original quede ordenado. Para la realizacin
de este proceso de ordenacin se necesitaran cuatro archivos. El
archivo original F y tres archivos auxiliares a los que se

denominaran F1, F2 y F3. De estos archivos, dos sern


considerados de entrada y dos de salida; esto, alternativamente,
con el objeto de realizar la fusin-particin. El proceso termina
cuando en la realizacin de una fusin-particin el segundo
archivo quede vaco.

2. EJEMPLOS:
Mtodo de bsqueda secuencial:

bsqueda

Mtodo de
binaria

Mtodo de seleccin:

Mtodo de insercin:

3. CONCLUSIONES:
Al realizar esta investigacin nos ayuda a conocer cada una 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 de los
mtodos de bsqueda puede notar que este mtodo es ms eficiente y
entendible que los dems. Es el algoritmo conocido como quicksort
(ordenacin rpida) recibe el nombre de su autor, Tony Hoare.
La idea del algoritmo es simple, se basa 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 y eficiente de los algoritmos de ordenacin
conocidos.

Bibliografa:
Y. Langsam, M. J. Augenstein, A. Tenenbaum. Data Structures using C and C++.
Prentice Hall,
Second edition. ISBN 0-13-036997-7.
http://en.wikipedia.org/wiki/Sorting_algorithm.

También podría gustarte