TOP

Ordenamiento de mezclas


también conocido como Merge-Sort:
 Básicamente trata sobre el ordenamiento por mezcla funciona de la siguiente manera:
      Si la longitud de la lista es 0 ó 1, entonces ya está ordenada. En otro caso:
      Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño.
      Ordenar cada sublista recursivamente aplicando el ordenamiento por mezcla.
      Mezclar las dos sublistas en una sola lista ordenada.
El ordenamiento por mezcla incorpora dos ideas principales para mejorar su tiempo de ejecución:
      Una lista pequeña necesitará menos pasos para ordenarse que una lista grande.
      Se necesitan menos pasos para construir una lista ordenada a partir de dos listas también ordenadas, que a partir de dos listas desordenadas. Por ejemplo, sólo será necesario entrelazar cada lista una vez que están ordenadas.
En pocas palabras se le puede denominar como un método de ordenamiento capaz de desmantelar un vector en varias partes y organizarlos de menor a mayor. Su ventaja es que es efectiva al momento de ejecutar sus procesos. Y su mas grande desventaja es el tiempo de la duración de la misma.

Pseudocodigo

SubProceso mezclar (arreglo1, n1, arreglo2, n2, arreglo3 por referencia)
                x1<-1;
                x2<-1;
                x3<-1;
                Mientras (x1 <= n1 y x2 <= n2) Hacer
                               Si arreglo1[x1] < arreglo2[x2] Entonces
                                               arreglo3[x3] <- arreglo1[x1];
                                               x1<-x1 + 1;
                               Sino
                                               arreglo3[x3] <- arreglo2[x2];
                                               x2<-x2 + 1;
                               FinSi
                              
                               x3<-x3 + 1;
                FinMientras
                Mientras x1 <= n1 Hacer
                               arreglo3[x3] <- arreglo1[x1]
                               x1<-x1 + 1;
                               x3<-x3 + 1;
                FinMientras
                Mientras x2 <= n2 Hacer
                               arreglo3[x3] <- arreglo1[x2]
                               x2<-x2 + 1;
                               x3<-x3 + 1;
                FinMientras
FinSubProceso


SubProceso mezcla ( array por referencia, n )
                n1 <- 0; n2 <- 0; x <- 1; t <- 1;
                Si n > 1 Entonces
                               Si n mod 2 = 0 Entonces
                                               n1 <- trunc(n / 2);
                                               n2 <- n1;
                               Sino
                                               n1 <- trunc(n / 2);
                                               n2 <- n1+1;
                               FinSi
                               dimension vector1[n1];
                               dimension vector2[n2];
                               Para x<-1 Hasta n1 Con Paso 1 Hacer
                                               vector1[x] <- array[x];
                               FinPara
                               Para t <- 1 Hasta n2 Con Paso 1 Hacer
                                               vector2[t] <- array[x];
                                               x <- x+1;
                               FinPara
                               mezcla(vector1,n1);
                               mezcla(vector2,n2);
                               mezclar(vector1, n1, vector2, n2, array);
                FinSi
FinSubProceso



Proceso principal
                Escribir "Ingrese el tamano del vector";
                Leer num;
                dimension vector[num];
                Para i<-1 Hasta num Con Paso 1 Hacer
                               Escribir "Ingrese el numero ", i;
                               Leer vector[i];
                FinPara
                mezcla(vector, num);
                Escribir "los elementos ordenados del vector son: ";
                Para i<-1 Hasta num Con Paso 1 Hacer
                               Escribir vector[i];
                FinPara
FinProceso


por medio de este video veremos el funcionamiento de el merge-sort



unas breves diapositivas con la explicacion general del merge-sort y con unos ejemplos explicados

0 comentarios:

Publicar un comentario