Помогите пожалуйста переделать код быстрой сортировки списка, в сортировку вставками списка. За ранее благодарен.
| Код | Type Link = ^ node; node = record elem: integer; next : Link end;
var Form1: TForm1; massive: Link; count: integer; t: integer; C,N,k: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var i:integer; tr:bool; T: Link; begin C:=0; N:=0; randomize; try count:=StrToInt(Edit1.Text); tr:=true; except tr:=false; end; if (tr) then begin i:=1; mass.ColCount:=count; new(massive); t:=massive; t^.elem:=Random(100)-50; while i<count do begin new(t^.next); t:=t^.next; t^.elem:=Random(100)-50; i:=i+1; end; ShowAll; end; end;
Procedure TForm1.sort(x: link; l,r: integer); Var i, j: integer; y, z: integer; Begin t:=t+1; N:=N+1; i:=l; j:=r; y:=GetElement((l+r) div 2); repeat while GetElement(i)<y do i:=i + 1; while GetElement(j)>y do j:=j - 1; if i<=j then begin ShowArray(FastSort,x,t); C:=C+1; z:=GetElement(i); SetElement(i,GetElement(j)); SetElement(j,z); i:=i+1; j:=j-1 end; until i>j; if l < j then sort (x,l, j); if i < r then sort(x,i, r); end;
procedure TForm1.ShowAll; var i: integer; begin i:=0; mass.ColCount:=count; while i<count do begin mass.Cells[i,0]:=IntToStr(i); mass.Cells[i,1]:=IntToStr(GetElement(i)); i:=i+1 end; end;
function TForm1.GetElement(i: integer): integer; var j: integer; elem: integer; T: Link; begin
t:=massive; j:=0; while j<count do begin if j=i then elem:=t.elem; t:=t^.next; j:=j+1; end; GetElement:=elem; end;
procedure TForm1.SetElement(i: integer; elem: integer); var j: integer; T: Link; begin t:=massive; j:=0; while j<count do begin if j=i then t.elem:=elem; t:=t^.next; j:=j+1; end; end;
procedure TForm1.ShowArray(Mas: TStringGrid; x: Link; z:integer); var i: integer; begin i:=0; Mas.ColCount:=count+1; Mas.RowCount:=z; if not(z-1=0) then Mas.FixedRows:=1; if not(count-1=0) then Mas.FixedCols:=1; while i<count do begin Mas.Cells[0,z]:=IntToStr(z-1); Mas.Cells[i+1,0]:=IntToStr(i); Mas.Cells[i+1,z-1]:=IntToStr(GetElement(i)); i:=i+1; end; end;
procedure TForm1.Button4Click(Sender: TObject); var r:integer; begin N:=0; C:=0; ShowArray(FastSort,massive,2); t:=2; sort(massive, 0, count-1); ShowAll; Label9.Caption:=IntToStr(N); Label8.Caption:=IntToStr©; end;
end.
|
|