编了一段程序,想看看插入法排序的过程,但是看到只是结果。
代码如下:
procedure TForm1.FormCreate(Sender: TObject);
var
  i:integer;
begin
  SetLength(unit1.ary,Image1.Width);
  for i:=0 to form1.Image1.Width-1 do
    begin
      form1.Image1.Canvas.MoveTo(i,0);
      unit1.ary[i]:=100-round(100*random);
      form1.Image1.Canvas.LineTo(i,unit1.ary[i]);
    end;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i,j,k,l,t:integer;
begin
  l:=form1.Image1.Width;
  for i:=1 to l-1 do
  begin
    t:=unit1.ary[i];
    for j:=1 to i do
    begin
      if t>unit1.ary[i-j] then break;
      unit1.ary[i-j+1]:=unit1.ary[i-j];
      ///
      form1.Image1.Canvas.Rectangle(i-j,0,i-j+1,form1.Image1.Height);
      form1.Image1.Canvas.MoveTo(i-j,0);
      form1.Image1.Canvas.LineTo(i-j,unit1.ary[i-j]);
      form1.Image1.Canvas.MoveTo(i-j+1,0);
      form1.Image1.Canvas.LineTo(i-j+1,unit1.ary[i-j+1]);
      //SysUtils.Sleep(10);
      form1.Canvas.TextOut(0,i,'~');
      ///
    end;
    unit1.ary[i-j+1]:=t;
  end;        ///
  form1.Image1.Canvas.Rectangle(0,0,form1.Image1.Width,form1.Image1.Height);
  for k:=0 to l-1 do
    begin
      form1.Image1.Canvas.MoveTo(k,0);
      form1.Image1.Canvas.LineTo(k,unit1.ary[k]);
    end;
  //SysUtils.Sleep(10);
  ///
end;