Professional Documents
Culture Documents
CAJAMARCA
FACULTAD DE INGENIERA
ESCUELA ACADMICO PROFESIONAL DE
INGENIERA DE SISTEMAS
CICLO : III
GRUPO : A-I
1. BSQUEDA SECUENCIAL
La bsqueda secuencial busca un elemento de un arreglo utilizando un valor destino llamado
clave. En una bsqueda secuencial (a veces llamada bsqueda lineal), los elementos de una
lista o vector se exploran (se examinan) en secuencia, uno despus de otro. Busca por cada
elemento de un arreglo en forma secuencial. Si la clave de bsqueda no coincide con un
elemento en el arreglo, el algoritmo evala cada elemento y, cuando se llega al final del
arreglo, informa al usuario que la clave de bsqueda no est presente. Si la clave de bsqueda
se encuentra en el arreglo, el algoritmo evala cada elemento hasta encontrar uno que
coincida con la clave de bsqueda y devuelve el ndice de ese elemento.
La bsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona cuyo
nmero de telfono es 958-220000 en un directorio o listado telefnico de una ciudad. Los
directorios de telfonos estn organizados alfabticamente por el nombre del cliente en lugar
de por nmeros de telfono, de modo que deben explorarse todos los nmeros, uno despus
de otro, esperando encontrar el nmero 958-220000.
El algoritmo de bsqueda secuencial compara cada elemento del arreglo con la clave de
bsqueda. Dado que el arreglo no est en un orden prefijado, es probable que el elemento a
buscar pueda ser el primer elemento, el ltimo elemento o cualquier otro. De promedio, al
menos el programa tendr que comparar la clave de bsqueda con la mitad de los elementos
del arreglo. El mtodo de bsqueda lineal funcionar bien con arreglos pequeos o no
ordenados. La eficiencia de la bsqueda secuencial es pobre.
Como ejemplo, considere un arreglo que contiene los siguientes valores:
Posiciones: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
v = { 34 , 56 , 22 , 10 , 77 , 51 , 93 , 30 , 43 , 52}
y un programa que busca el nmero 51. Usando el algoritmo de bsqueda lineal, el programa
primero comprueba si el 34 coincide con la clave de bsqueda. Si no es as, el algoritmo
comprueba si 56 coincide con la clave de bsqueda. El programa contina recorriendo el
arreglo en forma secuencial, y evala el 22, luego el 10, despus el 77. Cuando el programa
evala el nmero 51, que coincide con la clave de bsqueda, devuelve el ndice 5, que es la
posicin del 51 en el arreglo.
Se desea buscar el elemento 225. El punto central de la lista es el elemento v[3] = (100). El
valor que se busca es 225, mayor que 100; por consiguiente, la bsqueda continua en la mitad
superior del conjunto de datos de la lista, es decir, en la sub-lista:
Posiciones: [4] [5] [6] [7]
v = { 120 , 275 , 325 , 510 }
Ahora el elemento mitad de esta sub-lista v[5] = (275). El valor buscado, 225, es menor que
275 y, por consiguiente, la bsqueda continua en la mitad inferior del conjunto de datos de
la lista actual; es decir, en la sub lista de un nico elemento:
Posiciones: [4]
v = { 120 }
El elemento mitad de esta sub lista es el propio elemento v[4] = (120). Al ser 225 mayor
que 120, la bsqueda debe continuar en una sub lista vaca. Se concluye indicando que no
se ha encontrado la clave en la lista.
1. Calcular el ndice del punto central del arreglo: central = (bajo + alto)/2 (divisin
entera).
2. Comparar el valor de este elemento central con la clave:
Figura 3. Divisin del arreglo
1. Si v[central] < clave, la nueva sub- lista de bsqueda tiene por valores
extremos de su rango bajo = (central+1) y alto.
2. Si clave < v[central], la nueva sub-lista de bsqueda tiene por valores
extremos de su rango bajo y alto = (central-1).
Figura 4. Sub-Arreglos
El ordenamiento de datos (es decir, colocar los datos en cierto orden especfico, como
ascendente o descendente) es una de las aplicaciones computacionales ms importantes. Un
banco ordena todos los cheques por nmero de cuenta, de manera que pueda preparar
instrucciones bancarias individuales al final de cada mes. Las compaas telefnicas ordenan
sus listas de cuentas por apellido paterno y luego por primer nombre, para facilitar el proceso
de buscar nmeros telefnicos. Casi cualquier organizacin debe ordenar datos, y a menudo
cantidades masivas de ellos. El ordenamiento de datos es un problema intrigante, que requiere
un uso intensivo de la computadora, y ha atrado un enorme esfuerzo de investigacin. Un
punto importante a comprender acerca del ordenamiento es que el resultado final (los datos
ordenados) ser el mismo, sin importar qu algoritmo se utilice para ordenar los datos. La
eleccin del algoritmo slo afecta al tiempo de ejecucin y el uso que haga el programa de
la memoria.
Una coleccin de datos (estructura) puede ser almacenada en un archivo, un arreglo (vector
o matriz), un arreglo de registros, una lista enlazada o un rbol. Cuando los datos estn
almacenados en un arreglo, 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 < 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).
La eficiencia es el factor que mide la calidad y rendimiento de un algoritmo. En el caso de la
operacin de ordenacin, dos criterios se suelen seguir a la hora de decidir qu algoritmo de
entre los que resuelven la ordenacin es el ms eficiente:
1) tiempo menor de ejecucin en computadora;
2) menor nmero de instrucciones.
As, en el caso de ordenar los elementos de un vector, el nmero de comparaciones ser
funcin del nmero de elementos (n) del vector (arreglo). Por consiguiente, se puede expresar
el nmero de comparaciones en trminos de n (por ejemplo, n+4, o bien n2 en lugar de
nmeros enteros (por ejemplo, 325).
Los mtodos de ordenacin se suelen dividir en dos grandes grupos:
Directos: burbuja, seleccin, insercin.
Indirectos: (avanzados) Shell, ordenacin rpida.
En el caso de listas pequeas, los mtodos directos se muestran eficientes, sobre todo porque
los algoritmos son sencillos; su uso es muy frecuente. Sin embargo, en listas grandes estos
mtodos se muestran ineficaces y es preciso recurrir a los mtodos avanzados.
1. ORDENAMIENTO BURBUJA
El mtodo de ordenacin por burbuja es el ms conocido y popular entre estudiantes y
aprendices de programacin, por su facilidad de comprensin y programacin; por el
contrario, es el menos eficiente y por ello, normalmente, se aprende su tcnica pero no suele
utilizarse. La tcnica utilizada se denomina ordenacin por burbuja u ordenacin por
hundimiento debido a que los valores ms pequeos burbujean gradualmente (suben) hacia
la cima o parte superior del arreglo de modo similar a como suben las burbujas en el agua,
mientras que los valores mayores se hunden en la parte inferior del arreglo. La tcnica
consiste en hacer varias pasadas a travs del arreglo. En cada pasada, se comparan parejas
sucesivas de elementos. Si una pareja est en orden creciente (o los valores son idnticos), se
dejan los valores como estn. Si una pareja est en orden decreciente, sus valores se
intercambian en el arreglo.
Primera iteracin:
Figura 8. Pasada 0
Segunda iteracin:
Figura 9. Pasada 1
Tercera iteracin:
Cuarta iteracin:
Figura 11. Pasada 3(se hace una nica comparacin de 20 y 30, y no se produce intercambio)
4. ORDENAMIENTO SHELL
La ordenacin Shell debe el nombre a su inventor, D. L. Shell. Se suele denominar tambin
ordenacin por insercin con incrementos decrecientes. Se considera que el mtodo Shell es
una mejora de los mtodos de insercin directa.
En el algoritmo de insercin, cada elemento se compara con los elementos contiguos de su
izquierda, uno tras otro. Si el elemento a insertar es el ms pequeo hay que realizar muchas
comparaciones antes de colocarlo en su lugar definitivo.
El algoritmo de Shell modifica los saltos contiguos resultantes de las comparaciones por
saltos de mayor tamao y con ello se consigue que la ordenacin sea ms rpida.
Generalmente se toma como salto inicial n/2 (siendo n el nmero de elementos), luego se
reduce el salto a la mitad en cada repeticin hasta que el salto es de tamao 1.
Consideremos un arreglo v con 7 valores enteros:
Posiciones: [0] [1] [2] [3] [4] [5] [6]
v={6,1,5,2,3,4,0}
El nmero de elementos que tiene la lista es 7, por lo que el salto inicial es 7/2 = 3 (divisin
entera). La siguiente tabla muestra el nmero de recorridos realizados en la lista con los saltos
correspondiente.
Figura 17