Você está na página 1de 21

METODOS DE ORDENAMIENTO

Ordenacin interna.
Ordenar significa reagrupar o reorganizar un conjunto de datos u objetos en
una secuencia especfica, la cual puede ser de dos formas distintas:
-

Ascendente (menor a mayor) o

Descendente (mayor a menor).

Los mtodos de ordenacin se clasifican en dos categoras:


-

Ordenacin interna (de arreglos) y

Ordenacin externa (de archivos).

La ordenacin interna o de arreglos, recibe este nombre ya que los


elementos o componentes del arreglo se encuentran en la memoria
principal de la computadora.
Los mtodos de ordenacin interna a su vez se clasifican en:
-

Mtodos directos (n2) y

Mtodos logartmicos (n * log n).

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:
-

Ordenacin por intercambio.

Ordenacin por insercin.

Ordenacin por seleccin.

Algoritmos de ordenamiento por intercambio.


La ordenacin por intercambio consiste en comparar dos elementos del
arreglo y determinar si existe un intercambio entre ellos, para esto debe
definirse el tipo de ordenamiento que se quiere ya sea ascendente o
descendente.
Los algoritmos de ordenacin directa por intercambio que se analizaran son:
-

El mtodo de la burbuja.

El mtodo quicksort.

El mtodo shellsort.

Burbuja.

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:


Generar un ciclo que inicie desde uno hasta el nmero de elementos del
arreglo.
Generar un segundo ciclo dentro del anterior que inicie desde cero hasta el
nmero de elementos del arreglo menos dos.
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.
Para realizar el intercambio se genera un almacenamiento temporal, el cual
guarda el dato del primer elemento, el segundo elemento toma el lugar del
primero y en el lugar del segundo se coloca lo que contiene el
almacenamiento temporal.
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:
Generar un ciclo que inicie desde cero hasta el nmero de elementos menos
dos.
Generar un segundo ciclo desde el valor del ciclo anterior mas uno hasta el
nmero de elementos menos uno;
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.
Para realizar el intercambio se genera un almacenamiento temporal, el cual
guarda el dato del primer elemento, el segundo elemento toma el lugar del
primero y en el lugar del segundo se coloca lo que contiene el
almacenamiento temporal.
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:
Generar un ciclo que inicie desde uno hasta el nmero de elementos menos
uno.
Generar un segundo ciclo que inicie desde el nmero de elementos menos
uno y mientras que ese valor sea mayor o igual al del ciclo anterior (con
decrementos).

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.
Para realizar el intercambio se genera un almacenamiento temporal, el cual
guarda el dato del primer elemento, el segundo elemento toma el lugar del
primero y en el lugar del segundo se coloca lo que contiene el
almacenamiento temporal

Este tercer procedimiento es muy similar al anterior con la diferencia que el


elemento que va quedando es su lugar el primero no el ltimo como en el
caso anterior.
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 n2 en 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:
Debe elegir uno de los elementos del arreglo al que llamaremos pivote.
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.
Colocado el pivote en su lugar, el arreglo queda separado en dos
subarreglos, uno formado por los elementos del lado izquierdo del pivote, y
otro por los elementos del lado derecho del pivote.
Repetir este proceso de forma recursiva para cada subarreglo mientras
stos contengan ms de un elemento. Una vez terminado este proceso
todos los elementos estarn ordenados.
Para elegir un pivote se puede aplicar cualquiera de las siguientes tres
opciones:
El pivote ser el primer elemento del arreglo,
El pivote ser el elemento que esta a la mitad del arreglo, o
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.
La forma o tcnica de reacomodo de los elementos del lado izquierdo y
derecho del pivote, aplica el siguiente procedimiento que es muy efectivo.
Se utilizan dos ndices: izq, al que llamaremos ndice inicial, y der, al que

llamaremos ndice final. Conociendo estos elementos el algoritmo quedara


de la siguiente manera:
Recorrer el arreglo simultneamente con izq y der: por la izquierda con izq
(desde el primer elemento), y por la derecha con der (desde el ltimo
elemento).
Mientras el arreglo en su posicin izq (arreglo[izq]) sea menor que el pivote,
continuamos el movimiento a la derecha.
Mientras el arreglo en su posicin der (arreglo[der]) sea mayor que el
pivote, continuamos el movimiento a la izquierda.
Terminando los movimientos se compara los ndices y si izq es menor o igual
al der, se intercambian los elementos en esas posiciones y las posiciones se
cambian izq a la derecha y der a la izquierda.
Repetir los pasos anteriores hasta que se crucen los ndices (izq sea menor
o igual a der).
El punto en que se cruzan los ndices es la posicin adecuada para colocar
el pivote, porque sabemos que a un lado los elementos son todos menores y
al otro son todos mayores (o habran sido intercambiados).
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:
Generar un ciclo que se encargue de controlar el tamao que deben tener
los incrementos.
Este ciclo debe iniciar con la divisin del tamao del arreglo entre dos.

Mientras que el incremento sea mayor a cero debe continuar.


Y el cambio de incremento se elige de entre dos opciones: un uno o la
divisin del incremento anterior entre dos.
Un segundo ciclo dentro del anterior, controla el nmero de comparaciones
que se deben hacer segn el tamao del incremento.
El control de este ciclo debe iniciar con el incremento generado
anteriormente.
Mientras el control del ciclo sea menor que el tamao del arreglo.
El control debe cambiar de uno en uno.
Un tercer ciclo dentro del segundo controla en que momento se detienen las
comparaciones o se hacen los posibles intercambios entre los elementos.
El control de este ciclo debe iniciar con el valor del ciclo anterior.
Mientras que el control sea mayor o igual al incremento del primer ciclo y el
elemento del arreglo de la posicin del control de este ciclo menos el
incremento, sea mayor que el elemento del arreglo de la posicin control de
este ciclo, realice los intercambios entre estas posiciones.
Y el control se decremente con el valor del incremento.
Algoritmos de ordenamiento por distribucin.
Los algoritmos de ordenamiento por distribucin, ordenan el arreglo
tomando cada nmero e insertndolo en la posicin que toma su valor, es
decir, si se tiene un cinco se coloca en la posicin cinco del arreglo, algo as
como: lo que valgas en esa posicin te pongo. Esto indica que no se
podrn ordenar los arreglos que tengan valores repetidos y el arreglo
necesita el tamao del nmero ms grande que se encuentre en l.
Lo que debemos hacer cuando se repitan los datos es incrementar la
capacidad de la posicin (urna). Para lograrlo podemos hacer lo siguiente:
Definir un arreglo en el que cada posicin puede ser ocupada por ms de un
elemento (arreglo bidimensional) puede darse la situacin de ser
insuficiente la cantidad de posiciones adicionales o de existir demasiado
desperdicio de memoria.
Definir el tamao de la urna variable a travs del uso de estructuras de
datos como las listas simples enlazadas.
Los algoritmos de ordenamiento por distribucin se clasifican en:
-

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.

Si aplicamos este mtodo solo a enteros, el mtodo se clasificara de la


siguiente manera:
-

El digito menos significativo (LSD, Least Significat Digit) y

El digito ms significativo (MSD, More Significat Digit).

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 este 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:

Determinar cul es la mayor cantidad de dgitos del elemento mayor del


arreglo.
Crear un arreglo de colas, que permita almacenar cana uno de los dgitos
del 0 al 9.
Crear cada posicin del arreglo como un objeto que permita almacenar los
elementos en cada cola, segn el ndice que le corresponde.
Generar un ciclo que determine el nmero de digito que se esta procesando
y el factor que permite encontrar el digito.
Inicializar el nmero de digito y el factor en uno;
Mientras el digito sea menor o igual a la cantidad de dgitos encontrados en
le paso uno.
El nmero de digito se debe incrementar de uno en uno.
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.
Iniciar el control del ciclo en cero.
Mientras el control sea menor al tamao del arreglo, continuamos en el
ciclo.

El control del ciclo se cambia de uno en uno.


Generar un segundo ciclo que se encuentra dentro del primero, al igual que
el anterior y este controla el paso de los elementos de las colas al arreglo
nuevamente.
El control de este ciclo inicia desde la cola cero, al igual que el ndice que
controla el arreglo de los elementos.
Mientras el control sea menor a diez continua dentro del ciclo.
El control del ciclo se incrementa de uno en uno.
Dentro del ciclo anterior se genera otro ciclo que se encarga de colocar el
contenido de cada cola dentro del arreglo original y su condicin es que
mientras la cola no este vaca retire los elementos guardndolos en el
arreglo e incrementar el ndice que controla el arreglo.
Ordenamientos con las clases Arrays y Collections de la librera java.util.
Java ofrece dos versiones de mtodos de ordenacin: por arreglos (clase
Arrays) y por listas (clase Collections).
La clase Arrays incluye mtodos para procesar arreglos, en particular,
mtodos para ordenar, buscar, llenar y transformar un arreglo a una lista.
Todos los mtodos de ordenacin en Arrays implementan una versin del
algoritmo de ordenacin rpida (quicksort); cada mtodo sea plica a cada
tipo definido por java a excepcin del tipo boolean. Para cada tipo hay dos
versiones, una para ordenar el arreglo completo y otra para ordenar solo
una parte del arreglo. La sintaxis de cada versin es la siguiente:
Arrays.sort(tipo[ ]_arreglo);
Arrays.sort(tipo[ ]_arreglo, int_inicio, int_fin);

La clase Collections incluye mtodos para procesar listas enlazadas, dichos


mtodos permiten ordenar, buscar, copiar, entre otro mtodos. El mtodo
de ordenacin implementado en esta clase es el megasort y puede aplicarse
a estructuras de tipo Vector, ArrayLista y LinkedList. Est clase se compone
de dos mtodos para el ordenamiento cuya sintaxis es la siguiente:
Collections.sort(lista);
Collections.sort(lista, Comparator comp);
Funcionamiento de los algoritmos de ordenamiento
Quick sort
Dados los siguientes nmeros
Para implementar este mtodo se debe de recibir como argumentos el
vector con los nmeros, la posicin inicial y la posicin final del vector (vec,
inicio(0),final(9)). Las posiciones recibidas de inicio y final se deben de
respaldar porque sus valores van cambiar durante la ejecucin del mtodo.
Los respaldos los llamaremos Izq y Der donde Izq tiene el valor recibido en
inicio y Der el valor recibido de final. Estas variables se representan en el
vector siguiente como las posiciones inicial y final del vector

respectivamente. Tambin se debe de sacar un pivote que esta dado por la


suma de la posicin inicial, final y dividida entre dos.
Izq=0;inicio=0;
Der=9;final=9;
Pospivote=(inicio+final)/2=(0+9)/2=4;
Pivote=vec[Pospivote]=vec[4]=70

Ya no se cumple el paso 4 por lo que se avanza al paso cinco: Ya tenemos


del lado izquierdo todos los nmeros menores a 70 y del lado derecho los
mayores a 70.

Paso 5: Llamar de manera recursiva a el mismo mtodo solo si inicio<Der


enviando el vector,inicio,Der. (Se estn enviando los valores menores al
pivote).

Paso 6: Llamar de manera recursiva a el mismo mtodo solo si Izq<final


enviando el vector,Izq,final. (Se estn enviando los valores mayores al
pivote).

Se repiten los pasos 1,2,3,4 con las dos partes enviadas.

Shellsort

Para implementar este mtodo se debe de recibir el vector y con el ya se


obtiene el tamao del vector.
En este mtodo se utiliza un intervalo que se calcula con el tamao del
vector dividido entre 2, de tal forma que el intervalo da la mitad del vector y
se comparan los nmeros de la posicin 0, con el de la posicin obtenida de
intervalo, si el primero es menor que el segundo se intercambian, y se
avanza al siguiente par (posicin 1 con posicin del intervalo mas 1) y as
sucesivamente.
Paso 1: Calcular el intervalo Interv=tam_vec/2; Interv=8/2=4

Paso 5: Se vuelve a calcular el intervalo pero ahora con el calculado


anteriormente entre dos. Interv=4/2=2.
Paso 6: Se compara la posicin 0 con la posicin 2, 1 con 3,2 con 4,3 con 5,4
con 6 y as sucesivamente y si el primero es mayor que el segundo se
intercambian.

Archivos de acceso directo.

Son aquellos que permiten posicionamiento dentro del archivo, es decir se


puede posicionar el puntero del fichero dentro del archivo. Por ejemplo en
las cuentas de banco solo se puede acceder a cuentas particulares que
corresponden a la posicin dentro del archivo.

Constructores:

RandomAccessFile(File objFile, String Acceso) throws IOException

RandomAccessFile(String nomFile, String Acceso) throws IOException

La primera forma, objFile indica el nombre del archive que se a abrir como
objeto File. En la segunda forma se pasa el nombre del archivo en nomFile.
En ambos casos, Acceso determina qu tipo de acceso al fichero esta
permitido. Si es r (read), el fichero se puede leer, pero no escribir. Si es rw
(read-write), entonces el fichero se abre en modo de lectura-escritura.

Mtodo

Descripcin

void close( )

Cierra el archivo y libera los recursos asociados.

long getFilePointer( )

Proporciona el desplazamiento actual de la posicin de lectura/escritura del


archivo.

long length( )

Devuelve la longitud del archivo en bytes.

int read( )
Lee un byte
int read(byte b[ ])
Lee hasta b.length bytes del archivo
boolean readBoolean( )
byte readByte( )
Char, Double, Float ,Int , Long, Short,
Lee los diferentes tipos de datos del archivo (booleanos, byte, char, double,
float, int, etc);

String readLine( )
Lee un String
void write(int b )
Escribe un byte
void write(byte b[])
Escribe un arreglo de bytes

void writeBoolean(boolean v)

Char, Double, Float, Int, Long, Short, Chars

void seek(long Nuevapos)

Sita el puntero en la posicin pos

void setLength(long longitud)

Establece un nuevo tamao de fichero.

int skipBytes(int v)

Trata de saltar v bytes en el archivo.

El mtodo seek(long Nuevapos) thows IOException buscar, se usa para


establecer la posicin actual del puntero dentro del fichero.

Aqu, en Nuevapos especifica la nueva posicin, en bytes, del puntero del


archivo desde el principio de este.

Ordenacin externa.

La ordenacin externa o de archivos, recibe este nombre ya que los


elementos se encuentran almacenados en un archivo, el cual se almacena
en un dispositivo de almacenamiento secundario o externo.

Algoritmos de ordenacin externa.

Los algoritmos de ordenacin externa son necesarios cuando los datos que
se quiere ordenar no cabe en la memoria principal (RAM) de la computadora
y por tal motivo se encuentran almacenados en un dispositivo secundario
externo (el disco duro, cinta, memoria usb, etc.). La mayora de estos
algoritmos utilizan la tcnica de divide y vencers y la intercalacin de
archivos, para aplicar el ordenamiento.

Por intercalacin de archivos se entiende la unin o fusin de dos o ms


archivos, previamente ordenados, en un solo archivo, el cual debe quedar
ordenado al hacer la intercalacin.

Si se cuenta con dos archivos con datos previamente ordenados, el proceso


de intercalacin entre los dos archivos, consiste en extraer el primer
elemento de cada archivo y determinar cul es el menor, para colocarlo en
el tercer archivo, extraer el siguiente elemento del archivo y compararlo
nuevamente contra el otro elemento que ya se tenia del otro archivo, para
determinar cul ingresa al tercer archivo, este proceso se repita hasta que
uno de los archivos originales llegue hasta el fin, en este caso, solo resta
transcribir los nmeros del archivo que no se ha llegado a su fin al tercer
archivo.

Los algoritmos de ordenacin externa ms comunes son dos:

Intercalacin directa o mezcla directa y

Mezcla natural o mezcla equilibrada.

Intercalacin directa.

La intercalacin directa o mezcla directa es un algoritmo de ordenacin


externa, que permite organizar los elementos de un archivo, de forma
ascendente o descendente.

La idea centrar de este algoritmo consiste en realizar de forma sucesiva


una particin y una fusin que produce secuencias ordenadas de longitud
cada vez mayor. En la primera pasada la particin es de longitud 1 y la
fusin produce secuencias ordenadas de longitud 2. En la segunda pasada
la particin es de longitud 2 y la fusin produce secuencias ordenadas de
longitud 4. Este proceso se repite hasta que la longitud de la particin sea
menor o igual al nmero de elementos del archivo original.

Ejemplo. Considere el archivo F con los elementos 324, 230, 942, 700, 714,
139, 6, 915, 890 y 717, y los archivos auxiliares F1 y F2. El proceso de
ordenamiento segn la descripcin del algoritmo anterior seria:

F:
324, 230, 942, 700, 714, 139, 6, 915, 890, 717
Particin: 1

T.

Particin:Se construye tomando un nmero para cada una de las particiones

F1:

324, 942, 714, 6, 890

F2:

230, 700, 139, 915, 717

Fusin: Se fusionan las dos particiones comparando el menor de la particin


va primero

F:
230, 324, 700, 942, 139, 714, 6, 915, 717, 890
Particin: 2

T.

Particin: Se construye tomando dos nmeros para cada una de las


particiones

F1:

230, 324, 139, 714, 717, 890

F2:

700, 942, 6, 915

Fusin:

F:
230, 324, 700, 942, 6, 139, 714, 915, 717, 890
Particin: 4

T.

Particin:

F1:

230, 324, 700, 942, 717, 890

F2:

6, 139, 714, 915

Fusin:

F:
6, 139, 230, 324, 700, 714, 915, 942, 717, 890
Particin: 8

Particin:

F1:

6, 139, 230, 324, 700, 714, 915, 942

F2:

717, 890

T.

Fusin:

F:

6, 139, 230, 324, 700, 714, 717, 890, 915, 942

Mezcla natural.

La mezcla natural o mezcla equilibrada es un algoritmo de ordenacin


externa, que se encarga de organizar los elementos de un archivo de forma
ascendente o descendente.

La idea central de este algoritmo consiste en realizar particiones tomando


secuencias ordenadas de mxima longitud en lugar de secuencias
ordenadas de tamao fijo previamente determinadas, como la intercalacin
directa. Posteriormente se realiza la fusin de esas secuencias ordenadas,
alternndolas entre los dos archivos auxiliares. Repitiendo este proceso, se
logra que el archivo quede completamente ordenado. Para aplicar este
algoritmo, se necesitarn cuatro archivos. El archivo original y tres archivos
auxiliares. De estos cuatro archivos, dos sern considerados de entrada y
dos de salida, alternativamente en cada paso del algoritmo. El proceso
termina cuando al finalizar un paso, el segundo archivo de salida quede
vaco y el primero queda completamente ordenado.

Ejemplo. Considere el archivo F con los elementos 324, 230, 942, 700, 714,
139, 6, 915, 890 y 717, y los archivos auxiliares F1, F2 y F3. El proceso de
ordenamiento segn el algoritmo anterior seria:

F:

324, 230, 942, 700, 714, 139, 6, 915, 890, 717

Particin inicial

F1:

324, 700, 714, 6, 915, 717

F2:

230, 942, 139, 890

Fisin-Particin

F:

230, 324, 700, 714, 942

F3:

6, 139, 890, 915, 717

Fisin-Particin

F1:

6, 139, 230, 324, 700, 714, 890, 915, 942

F2:

717

Fisin-Particin

F:

6, 139, 230, 324, 700, 714, 717, 890, 915, 942

F3:

(sin elementos)

Otra alternativa de solucin a este algoritmo, es un procedimiento que solo


utiliza tres archivos: el archivo original y dos auxiliares, el primer proceso
consiste en dividir el archivo original en dos, colocando secuencias
ordenadas de mxima longitud en cada uno de los auxiliares, una secuencia
a la vez en cada auxiliar; el siguiente proceso consiste en hacer una fusin
de los dos auxiliares colocando los elementos en el archivo original, con
secuenciar ordenadas de mxima longitud, extradas de los dos archivos
auxiliares. Estos dos pasos se repiten mientras que el segundo archivo
auxiliar sea diferente de cero.

Ejemplo. Considere el archivo F con los elementos 324, 230, 942, 700, 714,
139, 6, 915, 890 y 717, y los archivos auxiliares F1 y F2. El proceso de
ordenamiento segn la descripcin del algoritmo anterior seria:

F:

324, 230, 942, 700, 714, 139, 6, 915, 890, 717

Particin: Se crea con una intercalacin (Se almacenan en la primera


particin mientras sean mayores y se pasa a la segunda particin cuando
sea menor y se siguen almacenando mientras sean mayores)

F1:

324, 700, 714, 6, 915, 717

F2:

230, 942, 139, 890

Fisin: Se aplica una intercalacin

F:

230, 324, 700, 714, 6, 915, 717, 942, 139, 890

Particin

F1:

230, 324, 700, 714, 717, 942

F2:

6, 915, 139, 890

Fisin

F:

6, 230, 324, 700, 714, 717, 915, 139, 890, 942

Particin

F1:

6, 230, 324, 700, 714, 717, 915

F2:

139, 890, 942

Fisin

F:

6, 139, 230, 324, 700, 714, 717, 890, 915, 942

Falta otra pasada y F2 se queda sin valores

Você também pode gostar