Metodo de ordenamiento por mezcla (merge sort)
pascal:
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.
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.
December 3rd, 2007 at 11:13 pm
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
December 10th, 2007 at 6:51 pm
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.