Einzelnen Beitrag anzeigen

fullyoak

Registriert seit: 16. Dez 2005
Ort: Frankfurt/Main
1 Beiträge
 
#1

Hilfe! Info-Arbeit Kl. 12

  Alt 16. Dez 2005, 08:41
Delphi-Quellcode:
unit UTest2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.Grids, System.ComponentModel, Borland.Vcl.StdCtrls;

type
  feldtyp = array[-4..7] of integer; {Achtung auf die Indizierung}

  TForm1 = class(TForm)
    Memo1: TMemo;
    StringGrid1: TStringGrid;
    BStart: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BStartClick(Sender: TObject);
    procedure sortierverfahren(var temp:feldtyp;rechts:integer);
    procedure ausgabe(z:integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i, zeile : integer;
  a: feldtyp;
implementation
{$R *.nfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  zeile:=0;
  a[1]:=35;a[2]:=38;a[3]:=56;a[4]:=42;a[5]:=26;a[6]:=9;a[7]:=4;
  for i:= 1 to 7 do begin
    stringgrid1.cells[i,zeile]:='a['+inttostr(i)+']';
    stringgrid1.Cells[i,zeile+1]:=inttostr(a[i]);
  end;
  stringgrid1.cells[0,zeile+1]:='Start';
  zeile:=zeile+2;
end;

procedure TForm1.Sortierverfahren(var temp: feldtyp; rechts:integer);
const t=3;
var x,i,j,k,s:integer;
    m : 1..t; {m kann Werte von 1 bis t annehmen}
    h:feldtyp;
begin
  h[1]:=5;
  h[2]:=3;
  h[3]:=1;
  for m:= 1 to t do begin
    k:=h[m];
    s:= -k;
    for i:=k+1 to rechts do begin
      x:=temp[i];
      j:=i-k;
      if s=0 then s := -k;
      s:=s+1;
      temp[s]:=x;
      while x < temp[j] do begin
        temp[j+k]:=temp[j];
        j:=j-k;
      end;
      temp[j+k]:=x;
    end;
  end;
end;

procedure TForm1.ausgabe(z:integer);
begin
  for i:= 1 to 7 do
    stringgrid1.cells[i,z]:=inttostr(a[i]);
  zeile:=zeile+1;
end;

procedure TForm1.BStartClick(Sender: TObject);
begin
  sortierverfahren(a,7);
  stringgrid1.Cells[0,zeile]:='Ergebnis';
  ausgabe(Zeile);
end;

end.

Wie funktioniert das Sortieren?
Welche Rolle spielen die h[i]?
Warum geht der Index von -4 bis 7?

DANKE!
Julian
  Mit Zitat antworten Zitat