直接插入法算法如下:
12 8 7 9 3
------------------------------------
8 12 7 9 3 8比12小,插入到12前
7 8 12 9 3 7比8小,插入到8前
7 8 9 12 3 9比8大,比12小,插入到两者之间
3 7 8 9 12 3比7小,插入到7之前我的写法如下,用了三个循环,觉得可改进,请帮忙.
function TForm1.insert(a: array of integer): tstringlist;
var i,j,k,l:integer;
  list: tStringlist;
begin
  for i := low(a)+1 to high(a) do
    begin
      for j := low(a) to i-1 do
        begin
           if a[i] < a[j] then
            begin
              k := a[i];
              for l := i downto j+1 do
                begin
                  a[l] := a[l-1];//移位;
                end;
              a[j] := k;
              break;
            end;
        end;
    end;
    list := tstringlist.Create;
    for i := low(a) to high(a) do
       list.Add(inttostr(a[i]));  
    result := list;
end;