Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura
Estructura
ESTRUCTURAS LINEALES
Pilas
Representacin en memoria
Operaciones bsicas
Aplicaciones
Colas
Representacin en memoria
Operaciones bsicas
Tipos de colas: Cola simple, Cola
circular y Colas dobles.
Aplicaciones: Colas de prioridad.
Listas
Operaciones bsicas
Tipos de listas.
Listas simplemente enlazadas, listas doblemente enlazadas y listas
circulares.
Aplicaciones.
ESTRUCTURAS NO LINEALES.
rboles
Clasificacin de rboles
Operaciones bsicas sobre rboles binarios
Aplicaciones
Grafos
Representacin de grafos
Operaciones bsicas
METODOS DE ORDENAMIENTO
Algoritmos de Ordenamiento Internos
Burbuja.
Quicksort.
ShellSort.
Radix
Algoritmos de ordenamiento Externos
Intercalacin
Mezcla Directa
Mezcla Natural
METODOS DE BSQUEDA
Bsqueda secuencial
Bsqueda binaria
Ejemplos de TDAS.
Usar el TDA permite aprovechar el nivel de abstraccin en el desarrollo de un
problema. Por ejemplo: Resolver el problema de verificacin si la suma y
multiplicacin de 2nmeros complejos producen el mismo nmero complejo.
Solucin en segundo lenguaje:
INICIO
//
Programa
principal
X,
COMPLEJOA
Booleano
siempre se los toma como un TDA separado son parte de la familia de los
grafos.
Datos
Permanentes
Temporales
Memoria Esttica.
Para implementar alguna estructura de datos, primero es necesario tener muy
claro cmo va a ser el manejo de memoria. La diferencia entre estructuras
estticas y dinmicas est en el manejo de memoria.
En la memoria esttica durante la ejecucin del programa el tamao de la
estructura no cambia. La estructura que maneja memoria esttica son los
vectores.
Un vector es una coleccin finita, homognea y ordenada de elementos. Es finita
porque todo arreglo tiene un lmite, homognea porque todos los elementos son
del mismo tipo y ordenada porque se puede determinar cul es el ensimo
elemento.
Un vector tiene dos partes: Componentes e ndices Los componentes hacen
referencia a los elementos que forman el arreglo y los ndices permiten referirse a
los componentes del arreglo en forma individual.
Los arreglos se clasifican en:
- Unidimensionales (vectores o listas)
- Bidimensionales (matrices o tablas)
- Multidimensionales.
Los arreglos tienen localidades de memoria continuas y para determinar el espacio
que deben ocupar, se requiere conocer la posicin inicial del arreglo en la memoria
y el tipo de datos primitivo del que fue declarado, como se aprecia en la siguiente
tabla.
Tipo de dato primitivo
byte
char
short
int
float
long
double
arregl
o
10
20
30
40
50
ndice 0
direcc
13
13
13
13
13
in
00
04
08
12
16
arreglo
direcci
270
270
270
271
271
272
272
272
273
n
0
40
70
70
50
80
80
60
90
90
Ejemplo. Tomamos como base el ejemplo anterior, pero ahora con columnas
quedara de la siguiente manera:
arreglo
direcci
270
271
272
n
0
40
50
60
70
70
80
80
90
90
270
271
272
270
272
273
Lectura / Escritura.
Asignacin.
Actualizacin:
Insercin.
Eliminacin.
Modificacin.
Ordenamiento.
Bsqueda.
Memoria Dinmica.
En la memoria dinmica durante la ejecucin del programa el tamao de la
estructura puede cambiar.
La memoria dinmica, es el espacio de almacenamiento que solicita una clase o
mtodo en tiempo de ejecucin. De esa manera, a medida que el proceso requiere
de ms espacio se solicita al sistema operativo, sin que el proceso se preocupe
por donde sern asignados los datos, ni que espacios de memoria nos entregara
el sistema operativo.
Una vez ejecutado nos quedara de esta manera el cdigo, en este programa
necesitamos el Fibonacci de un nmero ingresado desde la lnea de cdigo.
long num=5;
System.out.println("Serie Fibonacci");
System.out.println("El Fibonacci es "+fibo(num));
}
public static long fibo (long num){
if (num==0 || num==1){
return num;
}
else{
return fibo(num-1)+fibo(num-2);
}
}
}
Otro ejemplo el de las torres de Hani
El de torres de Hani primero presentamos el algoritmo de cmo funciona la
sucesin
Entrada: Tres
pilas
de
con
la
entonces
2. terminar
2. si no
1. hanoi(
,origen,destino, auxiliar)
final
4. hanoi (auxiliar, origen, destino)
1...n1, encima de la ficha grande (n)
5. terminar
Ahora en java
package hanoi;
import java.util.Scanner;
public class Principal extends Hanoi{
public static void main(String[] args) {
int n=0;
Scanner leer = new Scanner(System.in);
Hanoi h = new Hanoi();
System.out.println("Ingrese el numero de aros");
n = leer.nextInt();
h.Hanoi(n, 1,2,3);
}
}
si N = 0 (base)
(N-1) !* N>0 (recursin)
f(n)=1;
else
Si(n>0) Entonces---------
F(4)= = 24
F(4)= 4*6
F(3)= 3*2
N*f(n-1);
F(2)= 2*1
F(1)= 1+1
1
operacin
de
insercin
agrega
un
elemento
una
pila.
Eliminacin (Pop)
si sp=0 entonces
mensaje (underflow)
en caso contrario
x<--pila[sp]
sp<--sp-1
3.1.3 Aplicaciones
Las operaciones que se presentan en esta aplicacin son las siguientes:
OPERACIN PUSH
LA OPERACIN POP
Para retirar un elemento de la pila S y asignarlo a una variable del mismo tipo que
el tipo de los elementos de la pila, usaremos la operacin pop escribindola como:
v=pop(S);
En donde v es una variable que almacena el valor del elemento que estaba en la
cima de S. Hacer esta operacin tiene algunas implicaciones:
1. La variable v debe ser del mismo tipo que los elementos almacenados en la
pila.
2. Solamente se puede retirar un elemento de la pila a la vez.
3. Antes de la operacin, e era el elemento en la cima, ahora ya no lo es ms.
El apuntador ``cima'' decrece en una unidad.
LA OPERACIN STACKEMPTY
Esta operacin toma como argumento una estructura del tipo stack (pila) y
devuelve un valor booleano, devuelve un true si la pila est vaca y devuelve un
false si la pila tiene al menos un elemento.
LA OPERACIN STACKTOP
La operacin stacktop(S) devuelve el valor del elemento en la cima de la pila S.
Para hacer esta operacin escribiremos:
v=stacktop(S)
Las implicaciones de usar esta operacin son:
1. Se hace una copia del elemento que est en la cima
2. En realidad se hacen dos operaciones, primero se hace v=pop(S), luego un
push(S,v), porque despus de la operacin stacktop, la pila S queda sin
cambio alguno.
pila[top]=Dato;
top = top + 1;
}
preguntar " Desea otra insercion en pila :",
Leer otro;
}while(otro != "No");
}
3.2 Colas
La estructura de datos tipo cola consiste en un conjunto ordenado de elementos
del mismo tipo en el que solo podemos introducir elementos en la cola por un
extremo (Cola.Poner) y sacarlos por el extremo contrario (Cola.Sacar). La
estructura cola es del tipo FIFO (First In, First Out), es decir, el primer elemento
que ha entrado en la cola sera el primero en salir.
Las colas, al igual que las pilas, no existen como estructuras de datos estndar en
lenguajes de programacin. Este tipo de estructura de datos se puede representar
mediante el uso de:
Arreglos
Listas
Cuando se implementan con arreglos unidimensionales, es importante definir
tamao mximo para la cola y dos variables auxiliares. Una de ellas para que
almacene la posicin del primer elemento de la cola FRENTE y otra para que gua
la posicin del ltimo elemento de la cola FINAL.
En las figuras, podemos observar que por el frente siempre eliminaremos, ya sea
este al lado izquierdo o derecho e igual siempre aadiremos por el lado del final.
Si F>A entonces
mensaje (underflow)
en caso contrario
mensaje (frente/atrs)
si frente entonces
x <-- cola[F]
F <-- F+1
en caso contrario
x <-- cola[A]
A <-- A-1
Esta estructura es un conjunto de elementos donde a cada uno de ellos se les
asigna una prioridad, y la forma en que son procesados es la siguiente:
Un elemento de mayor prioridad es procesado al principio.
Dos elementos con la misma prioridad son procesados de acuerdo al orden en
que fueron insertados en la cola.
Algoritmo para Insertar
x <--1
final<--verdadero
para i desde 1 hasta n haz
Si cola[i]>prioridad entonces
x <--i
final <--falso
salir
si final entonces
x <--n+1
para i desde n+1 hasta x+1
cola[i] <--prioridad
n <-- n+1
Algoritmo para Extraer
Si cola[1]=0 entonces
mensaje(overflow)
en caso contrario
procesar <--cola[1]
para i desde 2 hasta n haz
cola[i-1] <--cola[1]
n <-- n-1
Las operaciones que nosotros podemos realizar sobre una cola son las siguientes:
Insercin.
Extraccin.
Las inserciones en la cola se llevarn a cabo por atrs de la cola, mientras que las
eliminaciones se realizarn por el frente de la cola (hay que recordar que el
primero en entrar es el primero en salir).
Existen dos variantes de la doble cola: Doble cola de entrada restringida.- Este
tipo de doble cola acepta solamente la insercin de elementos por un extremo;
mientras que puede eliminar por ambos. Doble cola de salida restringida.- Este
tipo de doble cola acepta solamente la eliminacin de elementos por un extremo;
mientras que puede insertar por ambos.
Cola Circular
Una cola circular o anillo es una estructura de datos en la que los elementos estn
de forma circular y cada elemento tiene un sucesor y un predecesor. Los
elementos pueden consultarse, aadirse y eliminarse nicamente desde la cabeza
del anillo que es una posicin distinguida. Existen dos operaciones de rotaciones,
una en cada sentido, de manera que la cabeza del anillo pasa a ser el elemento
sucesor, o el predecesor, respectivamente, de la cabeza actual. Para solucionar el
problema de desperdicio de memoria se implementaron las colas circulares, en las
cuales existe un apuntador desde el ltimo elemento al primero de la cola. La
representacin grfica de esta estructura es la siguiente:
La condicin de vaco en este tipo de cola es que el apuntador F sea igual a cero.
Las condiciones que debemos tener presentes al trabajar con este tipo de
estructura son las siguientes:
Vacio
ALGORITMO DE INICIALIZACIN
F < -- 0
A<-- 0
ALGORITMO PARA INSERTAR
Si (F+1=A) (F=1 y A=mximo) entonces
mensaje (overflow)
en caso contrario
inicio
si A=mximo entonces
A<--1
cola[A]<-- valor
en caso contrario
A <--A+1
cola[A]<-- valor
si F=0 entonces
F <-- 1
fin
ALGORITMO PARA EXTRAER
Si F=0 entonces
mensaje (underflow) en caso contrario
x <-- cola[F]
si F=A entonces
F <-- 0
A<-- 0
en caso contrario
si F=mximo entonces
F <--1 en caso contrario F <-- F+1
3.2.4 Aplicaciones.
Las Colas tambin se utilizan en muchas maneras en los sistemas operativos para
planificar el uso de los distintos recursos de la computadora. Uno de estos
recursos es la propia CPU (Unidad Central de Procesamiento).
Si est trabajando en una sistema multiusuario, cuando le dice a la computadora
que ejecute un programa concreto, el sistema operativo aade su peticin a su
"cola de trabajo".
3.3 Listas
Una lista lineal es una estructura en la que las inserciones, supresiones, y la
recuperacin puede ocurrir en cualquier posicin en la lista.
Por lo tanto, cuando la lista es esttica, se puede implementar mediante el uso de
un arreglo lineal Cuando la lista se lleva a cabo o realizado mediante el uso de
una matriz, que es una lista contigua.
Por contiguas, queremos decir que los elementos se colocarn consecutivamente
uno tras otro a partir de alguna direccin, llamada direccin base. La ventaja de
una lista implementada mediante una matriz es que es accesible al azar.
La desventaja de esta lista es que las inserciones y de supresiones requieren
movimiento de las entradas, por lo que es ms costoso. Una lista esttica se
puede implementar utilizando una matriz mediante la asignacin del i-simo
elemento de la lista en la entrada i de la matriz.
Estas son consideradas como los arreglos, dentro de estos tenemos:
Arreglos Unidimensionales: Son aquellos que tienen una sola dimensin,
conocidos tambin como vectores o listas.
Arreglos Bidimensionales: Son aquellos que tienen dos dimensiones. Conocidos
tambin como Matriz o Tabla.
Dentro del bucle (ciclo) asignaremos a la lista el valor del nodo siguiente al actual.
nodo (excepto el ltimo) enlaza con el nodo siguiente, y el enlace del ltimo nodo
contiene NULL para indicar el final de la lista. Aunque normalmente a la variable
de referencia se la suele llamar top, se le podra llamar como se desee.
3.3.3 Aplicaciones.
Aplicaciones de las listas enlazadas
Las listas enlazadas son usadas como mdulos para otras muchas estructuras de
datos, tales como pilas, colas y sus variaciones.
El campo de datos de un nodo puede ser otra lista enlazada. Mediante este
mecanismo, podemos construir muchas estructuras de datos enlazadas con listas;
esta prctica tiene su origen en el lenguaje de programacin Lisp, donde las listas
enlazadas son una estructura de datos primaria (aunque no la nica), y ahora es
una caracterstica comn en el estilo de programacin funcional.
A veces, las listas enlazadas son usadas para implementar vectores asociativos, y
estas en el contexto de las llamadas listas asociativas. Hay pocas ventajas en este
uso de las listas enlazadas; hay mejores formas de implementar stas estructuras,
por ejemplo con rboles binarios de bsqueda equilibrados. Sin embargo, a veces
una lista enlazada es dinmicamente creada fuera de un subconjunto propio de
nodos semejante a un rbol, y son usadas ms eficientemente para recorrer sta
serie de datos. Ventajas
Como muchas opciones en programacin y desarrollo, no existe un nico mtodo
correcto para resolver un problema. Una estructura de lista enlazada puede
trabajar bien en un caso pero causar problemas en otros. He aqu una lista con
algunas de las ventajas ms comunes que implican las estructuras de tipo lista. En
general, teniendo una coleccin dinmica donde los elementos estn siendo
aadidos y eliminados frecuentemente e importa la localizacin de los nuevos
elementos introducidos se incrementa el beneficio de las listas enlazadas.
Hermano, es el nodo que se encuentra al lado del nodo hijo y que dependen
En relacin a su tamao:
-
Altura, es el nmero de niveles que deben pasar para llegar al final del
Peso, es el nmero de nodos del rbol sin contar la raz (peso 6).
Camino, es la serie de nodos que tienes que pasar para llegar hasta
un nodo.
-
hoja.
rboles binarios.
Distintos
Similares
Equivalentes
Equilibrado
Completo
rboles Multicaminos.
B+
B*
2-4
Un rbol binario es equilibrado es aquel que todos sus nodos cumplen con la
propiedad:
altura (subrbol izquierdo) altura (subrbol derecho) <= 1
Creacin de un rbol
Eliminacin de un nodo.
Salvo que trabajemos con rboles especiales, como los que veremos ms
adelante, las inserciones sern siempre en punteros de nodos hoja o en punteros
libres de nodos rama. Con estas estructuras no es tan fcil generalizar, ya que
existen muchas variedades de rboles. De nuevo tenemos casi el mismo
repertorio de operaciones de las que disponamos con las listas:
Aadir o insertar elementos.
Buscar o localizar elementos.
Borrar elementos.
Moverse a travs del rbol.
Recorrer el rbol completo.
Los algoritmos de insercin y borrado dependen en gran medida del tipo de rbol
que estemos implementando, de modo que por ahora los pasaremos por alto y
nos centraremos ms en el modo de recorrer rboles.
4.1.3 Aplicaciones
Los arboles binarios facilitan la bsqueda y ordenamiento de los datos de alta
velocidad, la eliminacin eficiente de elementos de datos duplicados, la
representacin de directorios del sistema de archivos y la compilacin de
expresiones en lenguaje mquina.
4.2 Grafos
Un grafo es una estructura de datos no lineal con la siguiente caracterstica: un
nodo puede apuntar a varios y a su vez ser apuntado por otro.
Es un conjunto de puntos y un conjunto de lneas, cada una de las cuales une un
punto con otro. Los puntos se llaman nodos o vrtices de un grafo y las lneas se
llaman aristas o arcos.
Los algoritmos de ordenamiento interno son aquellos que son manejados usando
la memoria primaria, es decir la memoria de trabajo o memoria RAM.
A estos algoritmos se les conoce porque su uso es con listas simples, los datos
son de un solo tipo y se ordenan mientras se est trabajando con la lista de forma
preliminar, es decir; usando la lista, ya sea que los datos se inserten, o que se
inicialicen.
Entre los algoritmos de ordenamiento interno tenemos:
1. Ordenamiento de Burbuja
2. Ordenamiento Shellsort
3. Ordenamiento Quicksort
4. Ordenamiento Radix
5.1.1Burbuja.
El mtodo de ordenacin por intercambio directo o mtodo de la burbuja, es el
ms simple y consiste en comparar dos elementos adyacentes para determinar si
se realiza un intercambio entre los mismos, esto en caso de que el primero sea
mayor que el segundo (forma ascendente) o el caso de que el primero sea menor
que el segundo (forma descendente).
El primer procedimiento del mtodo de la burbuja es:
1.
Generar un ciclo que inicie desde uno hasta el nmero de elementos del
arreglo.
2.
Generar un segundo ciclo dentro del anterior que inicie desde cero hasta el
nmero de elementos del arreglo menos dos.
3.
Dentro del segundo ciclo debe existir una comparacin que determina el
tipo de ordenamiento (ascendente o descendente) entre el primer elemento
(posicin generado por el segundo ciclo) y el segundo elemento (el que
le sigue), si la respuesta a la condicin es verdadera se realiza un
intercambio entre los dos elementos.
4.
Una vez que los ciclos terminan la estructura debe quedar ordenada de forma
ascendente o descendente, pero este procedimiento es considerado como el pero
de los casos ya que si el nmero de elementos de la estructura es de 100, se
tienen que realizar 9900 comparaciones entes de terminar la ejecucin del
mtodo.
Un segundo procedimiento del mtodo de la burbuja es:
1.
2.
Generar un segundo ciclo desde el valor del ciclo anterior mas uno hasta el
nmero de elementos menos uno;
3.
Dentro del segundo ciclo debe existir una comparacin que determina el
tipo de ordenamiento (ascendente o descendente) entre el primer elemento
(posicin generada por el primer ciclo) y el segundo elemento (posicin
Una vez que los ciclos terminan la estructura debe quedar ordenada, la diferencia
con el procedimiento anterior radica en el nmero de comparaciones y posibles
intercambios que se presentan, en este segundo procedimiento, es menor ya que
cada pasada que se le da al arreglo se realiza una comparacin menos que en la
pasada anterior.
Un tercer procedimiento del mtodo de la burbuja es el siguiente:
1.
Generar un ciclo que inicie desde uno hasta el nmero de elementos menos
uno.
2.
3.
Dentro del segundo ciclo debe existir una comparacin que determina el
tipo de ordenamiento (ascendente o descendente) entre el primer elemento
(posicin generada por el segundo ciclo) y el segundo elemento (posicin
generada por el segundo ciclo menos uno), si la respuesta a la condicin es
verdadera se realiza un intercambio entre los dos elementos.
4.
5.1.2 Quicksort.
El mtodo de ordenamiento rpido o mtodo quicksort, es una tcnica basada en
otra conocida con el nombre divide y vencers, que permite ordenar una cantidad
de elementos en un tiempo proporcional a n2en el peor de los casos o a n log n en
el mejor de los casos. El algoritmo original es recursivo, como la tcnica en la que
se basa.
La descripcin del algoritmo para el mtodo de ordenamiento quicksort es la
siguiente:
1.
Debe elegir uno de los elementos del arreglo al que llamaremos pivote.
2.
Debe acomodar los elementos del arreglo a cada lado del pivote, de
manera que del lado izquierdo queden todos los menores al pivote y del
lado derecho los mayores al pivote; considere que en este momento, el
pivote ocupa exactamente el lugar que le corresponder en el arreglo
ordenado.
3.
4.
Para elegir un pivote se puede aplicar cualquiera de las siguientes tres opciones:
1.
2.
3.
Que el pivote se elija de entre tres elementos del arreglo (cualesquiera), los
cuales se deben comparar para seleccionar el valor intermedio de los tres y
considerarlo como el pivote.
2.
3.
4.
5.
Repetir los pasos anteriores hasta que se crucen los ndices (izquierdo sea
menor o igual a derecho).
6.
5.1.3 ShellSort.
El mtodo de ordenacin shellsort es una versin mejorada del mtodo de
ordenacin por insercin directa, que se utiliza cuando el nmero de elementos es
grande. Este mtodo recibe su nombre gracias a su creados Donald L. Shell,
tambin se conoce con el nombre insercin con incrementos decrecientes.
En el mtodo de ordenacin por insercin directa, cada elemento se compara con
los elementos contiguos de su izquierda de uno por uno, para lograr su
ordenamiento; si por ejemplo, el elemento a comparar es el ms pequeo y se
encuentra en la ltima posicin del arreglo, hay que ejecutar muchas
comparaciones antes de colocar el elemento en su lugar de forma definitiva.
El mtodo de ordenacin shellsort mejora el ordenamiento por insercin
comparando elementos separados por un espacio de varias posiciones. Esto
permite que un elemento haga pasos ms grandes hacia la posicin que debe
ocupar. Los pasos mltiples sobre los elementos se hacen con tamaos de
espacio cada vez ms pequeos y el ltimo paso del mtodo es un simple
ordenamiento por insercin directa, pero para entonces, los elementos de arreglo
ya casi estn ordenados.
Para determinar el tamao de los incrementos (saltos) constantes, el primero debe
ser generado a partir del tamao del arreglo entre dos, obteniendo solo su parte
entera de la divisin o redondeando el resultado de la misma, y posteriormente ir
reduciendo a la mitad el incremento en cada repeticin, hasta que el incremento
sea un uno.
El procedimiento para aplicar el algoritmo de shellsort es el siguiente:
1.
Este ciclo debe iniciar con la divisin del tamao del arreglo entre
dos.
2.
3.
2.
3.
2.
Mientras el control del ciclo sea menor que el tamao del arreglo.
3.
El control de este ciclo debe iniciar con el valor del ciclo anterior.
2.
3.
5.1.4 Radix
El mtodo de ordenacin radix es un algoritmo que ordena datos procesando sus
elementos de forma individual, segn la posicin que ocupan dentro del dato. Los
datos numricos los por dgitos y los datos alfabticos por letras.
El mtodo radix se clasifica en dos tipos segn el orden en el que procesan los
datos:
-
De derecha a izquierda y
De izquierda a derecha.
El radix LSD procesa los enteros iniciando por el digito menos significativo y
movindose al digito ms significativo (de derecha a izquierda).
El radix MSD procesa los enteros iniciando por el digito ms significativo y
movindose al digito menos significativo (de izquierda a derecha).
El mtodo ms aplicado de radix, es el LSD, y se encarga de colocar los nmeros
en una de las 10 colas que representan un digito cada una de ella, iniciando desde
la cola que controla el digito 0 hasta la cola que controla el digito 9, en estas colas
se colocan los nmeros dependiendo del digito que se est analizando en ese
momento, hasta que termine con el nmero que contenga la mayor cantidad de
dgitos, en cada cambio de digito los elementos se integran al arreglo nuevamente
desde la cola 0 hasta la cola 9, para elegir el siguiente digito de ordenamiento.
Cuando se efecta este proceso para cada dgito al arreglo est ordenado.
El procedimiento para aplicar el algoritmo de radix es el siguiente:
1. Determinar cul es la mayor cantidad de dgitos del elemento mayor del
arreglo.
2. Crear un arreglo de colas, que permita almacenar cana uno de los dgitos
del 0 al 9.
3. Crear cada posicin del arreglo como un objeto que permita almacenar los
elementos en cada cola, segn el ndice que le corresponde.
4. Generar un ciclo que determine el nmero de digito que se est procesando
y el factor que permite encontrar el digito.
1. Inicializar el nmero de digito y el factor en uno;
2. Mientras el digito sea menor o igual a la cantidad de dgitos
encontrados en el paso uno.
3. El nmero de digito se debe incrementar de uno en uno.
5. Crear un segundo ciclo que se encuentra dentro del anterior y que se
encarga de recorrer todo el arreglo desde la posicin inicial hasta la final del
arreglo.
1. Iniciar el control del ciclo en cero.
2. Mientras el control sea menor al tamao del arreglo, continuamos en
el ciclo.
5.2.1 Intercalacin
En este mtodo de ordenamiento existen dos archivos con llaves ordenadas, los
cuales se mezclan para formar un solo archivo.
La longitud de los archivos puede ser diferente.
El proceso consiste en leer un registro de cada archivo y compararlos, el menor es
almacenando en el archivo de resultado y el otro se compara con el siguiente
elemento del archivo si existe. El proceso se repite hasta que alguno de los
archivos quede vaco y los elementos del otro archivo se almacenan directamente
en el archivo resultado.
Mezcla Natural
Es una mejora del algoritmo de mezcla directa puesto que en vez de considerar
tramos de tamao fijo se toman en cuenta para la ordenacin en todo
momentotramos de longitud mxima. Al igual que la mezcla directa se debe hacer
un proceso de partir el archivooriginal para mezclarlo, posteriormente mientras en
el archivo C haya elementos amezclar.
5 METODOS DE BSQUEDA
Bsqueda secuencial
La bsqueda es el proceso de localizar un registro (elemento) con un valor de
llave particular. La bsqueda termina exitosamente cuando se localiza el registro
que contenga la llave buscada, o termina sin xito, cuando se determina que no
aparece ningn registro con esa llave. Bsqueda secuencial, tambin se le conoce
como bsqueda lineal. Supongamos una coleccin de registros organizados como
una lista lineal. El algoritmo bsico de bsqueda secuencial consiste en empezar
al inicio de la lista e ir a travs de cada registro hasta encontrar la llave indicada
(k), o hasta al final de la lista. La situacin ptima es que el registro buscado sea
el primero en ser examinado. El peor caso es cuando las llaves de todos los n
registros son comparados con k (lo que se busca). El caso promedio es n/2
comparaciones. Este mtodo de bsqueda es muy lento, pero si los datos no
estn en orden es el nico mtodo que puede emplearse para hacer las
bsquedas. Si los valores de la llave no son nicos, para encontrar todos los
registros con una llave particular, se requiere buscar en toda la lista. Mejoras en la
eficiencia de la bsqueda secuencial
1)Muestreo de acceso
Este mtodo consiste en observar que tan frecuentemente se solicita cada registro
y ordenarlos de acuerdo a las probabilidades de acceso detectadas.
2) Movimiento hacia el frente
Este esquema consiste en que la lista de registros se reorganicen dinmicamente.
Con este mtodo, cada vez que bsqueda de una llave sea exitosa, el registro
correspondiente se mueve a la primera posicin de la lista y se recorren una
posicin hacia abajo los que estaban antes que el.
3) Transposicin
Este es otro esquema de reorganizacin dinmica que consiste en que, cada vez
que se lleve a cabo una bsqueda exitosa, el registro correspondiente se
intercambia con el anterior. Con este procedimiento, entre mas accesos tenga el
registro, mas rpidamente avanzara hacia la primera posicin. Comparado con el
mtodo de movimiento al frente, el mtodo requiere mas tiempo de actividad para
reorganizar al conjunto de registros . Una ventaja de mtodo de transposicin es
que no permite que el requerimiento aislado de un registro, cambie de posicin
todo el conjunto de registros. De hecho, un registro debe ganar poco a poco su
derecho a alcanzar el inicio de la lista.
4)Ordenamiento
Una forma de reducir el numero de comparaciones esperadas cuando hay una
significativa frecuencia de bsqueda sin xito es la de ordenar los registros en
base al valor de la llave. Esta tcnica es til cuando la lista es una lista de
excepciones, tales como una lista de decisiones, en cuyo caso la mayora de las
bsquedas no tendrn xito. Con este mtodo una bsqueda sin xito termina
cuando se encuentra el primer valor de la llave mayor que el buscado, en lugar de
la final de la lista.
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
un
ndice
mediante
una
transformacin
del
elemento.
Esta