Metodo de ordenamiento por mezcla (merge sort)

¿Has encontrado un error? ¿Tienes la solución? Deja 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 estudiante con únicamente conocimiento básico del lenguaje, no de programación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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.

18 comentarios en "Metodo de ordenamiento por mezcla (merge sort)"

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

Kevin

Hola como estas? mas alla de los comentarios no estaria mal una breve explicacion de como funciona el procedimiento, y las caracteristicas de este tipo de ordenamiento, ventajas y desventajas respecto de los otros.
Igualmente muchas gracias por el codigo.
Saludos!!!

56789

eres un pipa

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

  • Si es lenguaje C <code lang="c">Código en C</code>
  • Si es lenguaje Pascal <code lang="pascal">Aquí dentro el código de Pascal</code>.

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

Deja un comentario

Suscribirse a los comentarios.