this slowpoke moves

Generate & sort Numbers

const n = 1500;

var Form1 : TForm1;
    x : array [1..n] of integer;
    
//

// Button erzeuge zahlen
procedure TForm1.CreateNumbers(Sender: TObject);
var i : integer;
    s : string;
begin
  randomize;
  Memo1.Clear;
  Memo2.Clear;
  s := '';
  for i:=1 to n do begin
    x[i]:=random (1000);
    s := s + Format ('%4d', [x[i]]) + ' ';

  if i mod 10 = 0 then begin
    Memo1.Lines.Add(s);
    s := '';
    end;
  end;
  btnSort.Enabled := True;
end;

// Button sortiere Zahlenreihe
procedure TForm1.Sort(Sender: TObject);
var tausch,vergleich,h,i,j : integer;
                   f,t1,t2 : TLargeInteger;
                         s : string;
begin
  tausch:=0; vergleich:=0;
  QueryPerformanceFrequency (f);
  QueryPerformanceCounter (t1);  // Zählerstand 1

  for i:=2 to n do
    for j:=n downto i do begin
      inc (vergleich);
      if x[j-1] > x[j] then begin
        inc (tausch);
        h := x[j-1];
        x[j-1] := x[j];
        x[j] := h;
    end;
  end;

  QueryPerformanceCounter (t2);  // Zählerstand 2
  Label1.Caption := FormatFloat ('Sortierzeit: 0.0 ms', 1000*(t2-t1)/f);
  Label2.Caption := IntToStr (vergleich) + ' Vergleiche';
  Label3.Caption := IntToStr (tausch) + ' Tauschoperationen';

  s := '';
  for i:=1 to n do begin
    s := s + Format ('%4d', [x[i]]) + ' ';
    if i mod 10 = 0 then begin
      Memo2.Lines.Add(s);
      s := '';
  end;
  end;

end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate