Beruflich Dokumente
Kultur Dokumente
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.
//
Programa
principal
X,
COMPLEJOA
Booleano
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)
byte
char
short
int
float
long
double
arregl
10
20
30
40
50
o
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.
pregunta
caso
base:
ms
pequeo
La
Suponiendo
pregunta
que
las
llamadas
caso
recursivas
funcionan
general
correctamente
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.
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. si no
1. hanoi(
,origen,destino, auxiliar)
final
4. hanoi (auxiliar, origen, destino)
Ahora en java
}
else
{
Hanoi(num-1, inicio, fin,temp);
System.out.println("Moviendose de la torre de inicio"+inicio+"ala torre
final"+fin);
Hanoi(num-1, temp,inicio,fin);
}
}
}
Programa principal
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
F(2)= 2*1
N*f(n-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.2Colas
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.
A <--A+1
cola[A]<-- valor
Algoritmo para Extraer
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
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 cosultarse, aadirse y eliminarse unicamente 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
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".
Cuando su peticin llega al frente de la cola, el programa solicitado pasa a
ejecutarse. Igualmente, las colas se utilizan para asignar tiempo a los distintos
usuarios de los dispositivos de entrada/salida (E/S), impresoras, discos, cintas y
dems. El sistema operativo mantiene colas para peticiones de imprimir, leer o
escribir en cada uno de estos dispositivos.
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:
Dentro del bucle (ciclo) asignaremos a la lista el valor del nodo siguiente al actual.
cualquier nodo y seguir la lista en cualquier direccin hasta que se regrese hasta
el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden
ser vistas como listas sin comienzo ni fin. Este tipo de listas es el ms usado para
dirigir buffers para ingerir datos, y para visitar todos los nodos de una lista a partir
de uno dado.
3.3.3 Aplicaciones.
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
Un rbol binario es completo cuando todos sus nodos excepto los del ltimo nivel,
tienen dos hijos y todas las hojas estn en el mismo nivel. Para calcular el nmero
de nodos de un rbol completo se aplica la formula:
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
4.1.3 Aplicaciones
Un ejemplo de estructura en rbol es el sistema de directorios y ficheros de un
sistema operativo. Aunque en este caso se trata de rboles con nodos de dos
tipos, nodos directorio y nodos archivo, podramos considerar que los nodos hoja
son archivos y los nodos rama son directorios. Otro ejemplo podra ser la tabla de
contenido de un libro, por ejemplo de este mismo manual, dividido en captulos, y
cada uno de ellos en subcaptulos. Aunque el libro sea algo lineal, como una lista,
en el que cada captulo sigue al anterior, tambin es posible acceder a cualquier
punto de l a travs de la tabla de contenido. Tambin se suelen organizar en
forma de rbol los organigramas de mando en empresas o en el ejrcito, y los
rboles genealgicos
Grafos
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.
Representacin de grafos
Hay tres maneras de representar un grafo en un programa: mediante matrices,
mediante listas ymediante matrices dispersas.
Representacin mediante matrices:
ser guardar por cada nodo, adems de la informacin que pueda contener el
propio nodo, una lista dinmica con los nodos a los que se puede acceder desde
l. La informacin de los nodos se puede guardar en un vector, al igual que antes,
o en otra lista dinmica.
que tenamos con las listas de adyacencia, que era la dificultad de obtener las
relaciones inversas, podemos utilizar las matrices dispersas, que contienen tanta
informacin como las matrices de adyacencia, pero, en principio, no ocupan tanta
memoria como las matrices, ya que al igual que en las listas de adyacencia, slo
representaremos aquellos enlaces que existen en el grafo
Operaciones bsicas
Insertar vrtice
La operacin de insercin de un nuevo vrtice es una operacin muy sencilla,
nicamente consiste en aadir una nueva entrada en la tabla de vrtices
(estructura de datos que almacena los vrtices) para el nuevo nodo. A partir de
ese momento el grafo tendr un vrtice ms, inicialmente aislado, ya que ningna
arista llegar a l
Insertar arista
Esta operacin es tambin muy sencilla. Cuando se inserte una nueva arista en el
grafo, habr que aadir un nuevo nodo a la lista de adyacencia (lista que
almacena los nodos a los que un vrtice puede acceder mediante una arista) del
nodo origen, as si se aade la arista (A,C), se deber incluir en la lista de
adyacencia de A el vrtice C como nuevo destino.
Eliminar vrtice
Esta operacin es inversa a la insercin de vrtice. En este caso el procedimiento
a realizar es la eliminacin de la tabla de vrtices del vrtice en s. A continuacin
habr que eliminar las aristas que tuviesen al vrtice borrado como origen o
destino.
Eliminar arista
Mediante esta operacin se borra un arco del grafo. Para llevar a cabo esta accin
es necesario eliminar de la lista de adyacencia del nodo origen el nodo
correspondiente al nodo destino.
Otras operaciones
Las operaciones adicionales que puede incluir un grafo son muy variadas. Adems
de las clsicas de bsqueda de un elemento o recorrido del grafo, tambin
podemos encontrarnos con ejecucin de algoritmos que busquen caminos ms
cortos entre dos vrtices, o recorridos del grafo que ejecuten alguna operacin
sobre todos los vrtices visitados, por citar algunas operaciones de las ms
usuales.
2.
METODOS DE ORDENAMIENTO
Los mtodos directos, son los ms simples y fciles de entender, son eficientes
cuando se trata de una cantidad de datos pequea. Los mtodos logartmicos, son
ms complejos, difciles de entender y son eficientes en grandes cantidades de
datos.
Los mtodos directos ms conocidos son:
-
El mtodo de la burbuja.
El mtodo quicksort.
El mtodo shellsort.
Burbuja.
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
generada por el segundo ciclo), 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, 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
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
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 (izq sea menor
o igual a der).
6.
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.
2.
Mientras el control del ciclo sea menor que el tamao del arreglo.
3.
3.
El control de este ciclo debe iniciar con el valor del ciclo anterior.
2.
3.
2.
CountingSort.
RadixSort.
BucketSort.
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.
Intercalacin
En este mtodo de ordenamiento existen dos archivos con llaves ordenadas,
loscuales 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 esalmacenando en el archivo de resultado y el otro se
compara con el siguienteelemento del archivo si existe. El proceso se repite hasta
que alguno de losarchivos quede vaco y los elementos del otro archivo se
almacenan directamenteen el archivo resultado.
Mezcla Directa
Algoritmo de Mezcla Directa:
Dividir una secuencia inicial de datos en dos subcadenas y mezclar elemento a
elemento de forma ordenada.
El proceso se repite hasta que la secuencia inicial queda totalmente ordenada.
Pasos:
1) Se divide la secuencia inicial de datos del fichero a
en dos mitades b y c
2) Se mezclan b y c combinando elementos aislados para formar pares
ordenados
3) La secuencia resultante se almacena en el fichero a y se repiten los pasos 1)
2) para formar cudruplos ordenados.
4) Se repiten los pasos ante
riores para formar octetos ordenados, y assucesivamente.
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.
3.
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