每天一个算法_插入排序

打算每天写一个小算法,也为以后查找起来更方便一些。(均为我自己运行能通过的代码,以便对delphi不太熟悉的人直接粘贴,即可运行起来,呵呵)

插入排序:定义个函数:

(*从第2个开始,每次与前面的X个已排序好的数字比较*)
procedure TForm1.InsertSort;
var
  i,j,k,n: Integer;
begin
  for i := 2 to Length(A) do
    begin
      k := A[i];
      j := i - 1;
      while ((j > 0) and (A[j] > k)) do
        begin
          A[j + 1] := A[j];
          Dec(j);
        end;
      A[j + 1] := k;
    end;
end;

顺带说一下,这个过程里面定义的数组A,如果你在过程里面定义的话,不能直接赋初值,我是定义在全局变量里面了。这样可以直接赋值,我是为了方便,呵呵。

var
  Form1: TForm1;
  A: array[1..6] of Integer = (89,67,4,3,2,1);

 


完了测试一下,在界面放个Button与Edit,在其Button的Onclick事件中:

procedure TForm1.Button1Click(Sender: TObject);
begin
  InsertSort;
  for n := 1 to Length(A) do
    begin
      Edit1.Text := Edit1.Text + ' ';
      Edit1.Text := Edit1.Text + IntToStr(A[n]);
    end;
end;


over。。。

posted @ 2013-04-26 18:21  丁满同志  阅读(128)  评论(0)    收藏  举报