Escolar Documentos
Profissional Documentos
Cultura Documentos
Semana 2
1. Introduccin.
2. Ordenacin:
- Mtodo de la burbuja.
- Mtodo de insercin.
- Mtodo de seleccin.
PGINA 106/176
- Mtodo de Quick Short.
3. Bsqueda:
- Bsqueda secuencial.
- Bsqueda binaria.
- Bsqueda por conversin de claves o Hashing.
4. Intercalacin.
1. INTRODUCCIN:
A la hora de tratar datos, muchas veces nos conviene que estn ordenados.
Estos mtodos nos pueden resultar eficientes cuando hacemos las bsquedas.
2. ORDENACIN:
Consiste en organizar un conjunto de datos en un orden determinado segn
un criterio.
La ordenacin puede ser interna o externa:
- Interna: La hacemos en memoria con arryas. Es muy rpida.
- Externa: La hacemos en dispositivos de almacenamiento externo con
ficheros.
Para determinar lo bueno que es un algoritmo de ordenacin hay que ver la
complejidad del algoritmo (cantidad de trabajo de ese algoritmo), se mide en el
nmero de operaciones bsicas que realiza un algoritmo. La operacin bsica de
un algoritmo es la operacin fundamental, que es la comparacin.
Mtodo de la burbuja:
La filosofa de este mtodo es ir comparando los elementos del array de 2 en
2 y si no estn colocados correctamente intercambiarlos, as hasta que tengamos el
array ordenado.
Hay que comparar la posicin 1 y la 2 y si no estn ordenadas las
intercambio. Luego la 2 y la 3 y as sucesivamente hasta que comparo las ltimas
posiciones.
Con esta primera pasada lograremos que quede ordenado el ltimo
elemento del array.
Tericamente, en cada pasada iremos colocando un elemento, y tendramos
que hacer n 1 pasadas. Si en una pasada no se hacen cambios, el array ya est
ordenado.
PGINA 107/176
Ordenado falso
I 1
J I
Desde j = 1 hasta n 1
Si datos [j] > datos [j + 1]
Entonces aux datos [j]
I I+1
Fin mientras
Fin
Mtodo de insercin:
Se supone que se tiene un segmento inicial del array ordenado, y hay que ir
aumentando la longitud de segmento hasta que coincide con la longitud del array.
Para ello insertaremos el siguiente elemento en el lugar adecuado dentro del
segmento ordenado.
Esto se hace moviendo cada elemento del segmento ordenado a la derecha
hasta que se encuentre uno menor o igual al elemento que queremos colocar en el
segmento o hasta que no tenemos elementos, y lo coloco en esa posicin.
Para arrancar este mtodo se parte de que el segmento ordenado inicial este
es la primera posicin.
J j1
Fin mientras
Datos [j + 1] aux
Fin desde
Fin
Mtodo de la seleccin:
Se trata de buscar el elemento ms pequeo y colocarlo en la primera
posicin, despus el segundo ms pequeo y colocarlo en la segunda posicin, y as
sucesivamente hasta que el array este ordenado.
PGINA 108/176
Para ello vamos a recorrer el array, y por cada elemento buscamos a la
derecha de esa posicin cual es el ms pequeo, y lo intercambio con el elemento
que estoy examinando.
Datos[pos] datos[i]
Datos[i] aux
Fin desde
Fin
Datos[pivote] aux2
Fin si
Fin desde
Datos[ini] datos[pivote]
Datos[pivote] aux
Fin
3. BSQUEDAS:
Hay 2 tipos de bsquedas, internas que se hacen en memoria y externas que
se hacen en ficheros. Cuando buscamos en un fichero, normalmente lo hacemos a
travs de una clave.
Dado un determinado valor, se trata de ver si existe un elemento con ese
valor en el array de ficheros donde se busca, tal que se devuelve si est o no.
Existen 3 mtodos de bsqueda:
- Secuencial.
- Binaria o dicotnica.
- Por transformacin de claves o Hashing.
Bsqueda secuencial:
Se puede aplicar para bsquedas internas y externas, y hay que ir pasando
secuencialmente por todos los elementos de la estructura hasta encontrar el
elemento o acabar la lista.
Fin mientras
Si datos[i] = elem
Entonces escribir Elemento encontrado en la posicini
Sino escribir Elemento no encontrado
Fin si
Fin
PGINA 110/176
Si encuentro el elemento en una posicin distinta de N+1 significa que no
est en la estructura. La ventaja es que en la condicin del mientras no tengo que
preguntar si se acaba la estructura, me ahorro una condicin, el inconveniente es
que tiene que sobrar espacio al final del array.
I 1
Fin mientras
Si i <> n+1
Entonces escribir Elemento encontrado en la posicini
Sino escribir Elemento no encontrado
Fin si
Fin
fin si
fin mientras
si ini < fin
entonces escribir Elemento encontrado en la posicin mit
sino escribir Elemento no encontrado
fin si
fin
Bsqueda por transformacin de claves o Hashing:
Es necesario que lo que se busque sea por un determinado campo clave. Se
trata de convertir ese campo clave en una direccin real, si estamos en un array, en
un posicin del array y si estamos en un fichero, en un registro del fichero.
PGINA 111/176
Lo que hace que se convierta la clave en una direccin real es la funcin de
direccionamiento. Existen diferentes tipos de funciones de direccionamiento:
- La ms usada es la funcin mdulo, que consiste en dividir la clave entre
el nmero de elementos mximos de la estructura y coger el resto como
direccin real de almacenamiento (el ndice si es un array, o una
direccin relativa si es un fichero).
- Entruncamiento: Es la parte de la clave como ndice.
- Plegamiento: Dividir la clave en partes iguales de tamao, que va a ser
igual al nmero de cifras del tamao del array, luego sumarlas y coger
las ltimas cifras de la suma.
- Mitad del cuadrado: Es el cuadrado de la clave y despus coger las
cifras centrales.
de cada posicin del array salga un puntero a una lista enlazada que
enlace a todos los elementos que deberan ir posicionados en esa posicin
o ndice del array.
4. INTERCALACIN:
Consiste en juntar varias listas ordenadas en una sola lista que quede
ordenada.
PGINA 112/176
Procedimiento fusion (a1: T1; a2: T2; a3: T3)
Var
I,j,k,l: entero
Inicio
I 1
J 1
K 1
I I+1
Sino a3[k] a2[j]
J J+1
Fin si
K K+1
Fin mientras
Si i < n
Entonces desde L=i hasta m
K k +1
A3[k] a2[l]
Fin desde
Sino desde L=j hasta n
K k+1
A3[k] a1[l]
Fin desde
Fin si
Fin