我是一名Delphi初学者,直接插入法排序总是有问题,麻烦大家帮忙看一下是那里出错了,谢谢。
procedure insertsort(var queue1:queue;n:integer);   //直接插入法排序
var
  k,j,change:integer;
begin
  for k:=2 to n do
   begin
     if (queue1[k]<queue1[k-1]) then
       change:=queue1[k];
       queue1[k]:=queue1[k-1];
     for j:=k-2 downto 1 do
      if (change<queue1[j]) then
       queue1[j+1]:=queue1[j];
      queue1[j+1]:=change;
   end;
end;

解决方案 »

  1.   

    var
      k, j, p,change: integer;
    begin
      for k := 2 to n do
      begin
        if (queue1[k] < queue1[k - 1]) then
        begin
          change := queue1[k];
          queue1[k] := queue1[k - 1];
          p:=k-2;
          for j := k - 2 downto 1 do
            if (change < queue1[j]) then
            begin
              p:=j-1;
              queue1[j + 1] := queue1[j];
            end;
          queue1[p + 1] := change;
        end;
      end;
    end;