All pastes #160128 Raw Edit

Mine

public text v1 · immutable
·published 2006-09-03 21:51 UTC
rendered paste body
 type
_tab = record
  name: string;
  surname: string;
  points: byte;
  time: byte;

rocedure QSort(adr:pointer;size_elementu:longint;adres:pointer;ile,ilosc_elementow:longint);
var
  ii,i,j,k,l: integer;
  p1,p2,p11,p22: ^byte;
  b: byte;
  q: integer;
begin
  for ii:=1 to ilosc_elementow {*ilosc_elementow} do for i:=0 to ilosc_elementow-2 do
  begin
    j:=i+1;
    p1:=adres;
    inc(p1,i*size_elementu);
    p2:=adres;
    inc(p2,j*size_elementu);
    for k:=ile-1 downto 0 do
    begin
      { przeprowadzam porównanie }
      p11:=p1; inc(p11,k);
      p22:=p2; inc(p22,k);
      q:=0;
      if p11^>p22^ then q:=2;
      if q=0 then continue;
      if q=1 then break;
      { zamieniam strony }
      for l:=0 to size_elementu-1 do
      begin
        p11:=adr; inc(p11,i*size_elementu+l);
        p22:=adr; inc(p22,(i+1)*size_elementu+l);
        b:=p11^;
        p11^:=p22^;
        p22^:=b;
      end;
      break;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
QSort(@tab,sizeof(tab),@tab.name,sizeof(tab.name),2);
end;