Metodo de ordenamiento por mezcla (merge sort)

program Mezcla;
uses CRT;
Const
     largo = 5;
Type
      V2    =   Array[1..largo] of integer;
      v3    =   Array[1..largo+largo] of integer;
Var
   Vec,Vec2, Vec3               :       V2;
   VecFin                       :       v3;
   J,I,K,aux,con,h,x, ban       :       Integer;
   entro                        :       Boolean;
 
Procedure Llenar(vec:V2; Var vec2: v2);
          Begin
               For Con:=1 to largo do Vec[Con]:=Random(100);
               For Con:=1 to largo do Vec2[Con]:=Random(100);
 
          End;
 
Procedure Llenar2(vec:V2; Var vec2: v2);
          Begin
             vec[1]:=65;
              vec[2]:=70;
              vec[3]:=13;
              vec[4]:=82;
              vec[5]:=85;
              vec2:=vec;
 
          End;
 
Procedure Llenar3(vec:V2; Var vec2: v2);
          Begin
              vec[1]:=35;
              vec[2]:=44;
              vec[3]:=85;
              vec[4]:=17;
              vec[5]:=94;
              vec2:=vec;
 
          End;
 
Procedure Display(V:V2; hh:Integer);
          Begin
               For Con:=1 to largo do
                   Begin
                        If Ban <> 1 Then
                           Begin
                                GotoXY(hh,Con);Writeln(V[Con]);
                           End
                        Else
                            Begin
                                 GotoXY(hh,Con+largo+2);Writeln(V[Con]);
                            End;
 
                        Delay(100)
                   End;
          End;
 
Procedure Burbu(vec:v2; Var vec3: v2);
Begin
      For J:=1 to largo-1 do
         Begin
            entro:=false;
            For I:=1 to largo-1 do
                Begin
                   If Vec[I] > Vec[i+1] then
                     Begin
                       Aux:=Vec[i];
                       Vec[i]:=Vec[I+1];
                       Vec[I+1]:=Aux;
                       Entro:=True;
                       display(Vec,H);
                       h:=h+3;
                     End;
                End;
            If entro=False then J:=largo-1;
         End;
         Vec3:=vec;
End;
 
Procedure Intercalar(vec1:v2; vec2:v2; var vecres:v3);
Begin
     J:=1;
     K:=1;
     For I:=1 to largo+largo do
     Begin
        If vec1[J] <= vec2[K] then
        Begin
           vecres[I]:= vec1[J];
           J:=J+1;
           if J > largo then
              Begin
                   J:=largo;
                   vec1[J]:=vec2[J]
              End
        End
        else
        Begin
           vecres[I]:= vec2[K];
           K:=K+1;
           if k > largo then
              Begin
                   k:=largo;
                   vec2[k]:=vec1[k]
              End
 
        End;
 
     End;
     writeln;
End;
 
Procedure Desplegar(vecx:v3);
Begin
     For I:=1 to largo+largo do
         writeln (vecx[I]);
 
end;
 
{
Procedure Desplegar2(vecx:v2);
Begin
     For I:=1 to largo do
         writeln (vecx[I]);
     writeln;
end;
}
 
 
Begin
   Clrscr;
{   GotoXY(1,1);Writeln('Vectores 1 Y 2');}
 
   h:=1;
   Randomize;
   Llenar(vec,vec);
   Burbu(vec, vec2);
 
   h:= 1;
   Ban:= 1;
   Llenar(vec,vec);
   Burbu(vec,vec3);
 
{   Desplegar2 (vec2);
   Desplegar2 (vec3);
}
   Intercalar(vec2,vec3,vecfin);
   writeln ('Vector Resultado de la Mezcla');
   Desplegar (vecfin);
 
   Repeat Until Keypressed;
End.

¿Has encontrado algún error? ¿Tienes la solución? Dejame tu correción ;-)

Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.

Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:

  • Si es lenguaje C [c]Código en C[/c]
  • Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].

De esta manera el código coloreas el código.

Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:

Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.

¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)

Comentarios

2007-12-03 23:13:49
jorge velasco
estaria muy buenos q alla mas comentarios sobre las lineas de programacion , si bien en estos casos son metodos estrictos de ordenamientos , por lo que no necesitan demaciados comentarios , pero hay algunos programadores que los nesecitamos , muy buena la pagina y denle para adelante , lastima que ya no se puede vender software hecho por uno sin tener titulo , ni siquiera distribuirlo..

salu2
2007-12-10 18:51:53
admin
Hola Jorge.

Se que comentar las línea sle solucionaría la vida a muchos, pero estas aplicaciones las cree cuando recién iniciaba en esto de la programación.

:P