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:
| procedure TForm1.Mergesort(var Zahlen: array of integer; l,r: integer); var z : integer; begin if (r-1) > 0 then begin Teiler:= (1+r) div 2; //Wir suchen uns die Mitte Mergesort(Zahlen,l,Teiler); //Teilt die hälften Links Mergesort(Zahlen,Teiler,r); //Teilt die rechten Hälften Merge(Zahlen,l,Teiler,r); //Siehe Prozedure Merge end;
for z:=1 to 25 do begin StringGrid1.Cells[z,1]:=inttostr (Zahlen[z]); end end;
procedure TForm1.Merge(var Zahlen: array of integer; l,Teiler,r: integer); var Hilfsarray : array[1..25] of integer; var h1, h2, h3, h4, : integer; begin
h1:=1; h2:=(Teiler + 1); h3:=l;
while (h1>=Teiler) and (h2<=r) do begin if Zahlen[h1]<= Zahlen[h2] then begin Hilfsarray[h3]:= Zahlen[h2]; h1:= h1+1; end else begin Hilfsarray[h3]:= Zahlen[h2]; h2:= h2+1; end; h3:= h3+1; end;
if h1 > Teiler then for h4:= h1 to r do Hilfsarray[h3+h4-h2]:= Zahlen[h4] else begin for h4:= h1 to Teiler do Hilfsarray[h3+h4-h1]:= Zahlen[h4]; for h4:= l to r do Zahlen[h4]:= Hilfsarray[h4]; end;
end; |