Здравствуйте

Второй день пытаюсь решить задание.
Проблема в непонимании списков.
Задание: Сравнить метод простой вставки и метод выбором.
Я сделала программу с использованием массивов.
Преподаватель сказал сделать с связными списками, которых я не понимаю. Прошу объяснить мне как переделать программу, хотя бы одну сортировку.
Программа состоит из формы и модуля.
Вот мой код с массивами:
Форма:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ModSravn;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
Label2: TLabel;
Memo6: TMemo;
Memo7: TMemo;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var TA:TKlas1;
procedure TForm1.Button1Click(Sender: TObject);
var n:integer;
begin
n:=StrToInt(Edit1.Text);
Memo1.Clear;
Button2.Visible:=True;
Button3.Visible:=True;
TA:=TKlas1.Create;
TA.NewMas(n);
TA.Output(Memo1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo2.Clear;
TA.Sort1;
TA.Output(Memo2);
TA.Output1(Memo4,Memo6);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Memo3.Clear;
TA.Sort2;
TA.Output(Memo3);
TA.Output1(Memo5,Memo7);
end;
end.
Модуль:
Код:
unit ModSravn;
interface
uses Sysutils,Classes,StdCtrls,Grids;
type Tm=array of integer;
type TKlas=class(TObject)
private
ma:Tm;
mb:Tm;
ms1:integer;
ms2:integer;
property a:Tm read ma write ma;
property b:Tm read mb write mb;
property s1:integer read ms1 write ms1;
property s2:integer read ms2 write ms2;
public
procedure NewMas(n:integer);
procedure Output(Memo:TMemo);
procedure Output1(Memo1,Memo2:TMemo);
end;
type TKlas1=class(TKlas)
public
procedure Sort1;
procedure Sort2;
end;
implementation
procedure TKlas.NewMas(n: Integer);
var i:integer;
begin
randomize;
setLength(ma,n);
setLength(mb,n);
for i:=1 to n-1 do
begin
a[i]:=random(100)-50;
b[i]:=a[i];
end;
end;
procedure TKlas.Output(Memo: TMemo);
var i:integer;
begin
for i:=0 to Length(a)-1 do
begin
Memo.Lines.Add(IntToStr(a[i]));
end;
end;
procedure TKlas.Output1(Memo1: TMemo; Memo2: TMemo);
begin
Memo1.Clear;
Memo2.Clear;
Memo1.Lines.Add(IntToStr(ms1));
Memo2.Lines.Add(IntToStr(ms2));
end;
{Сортировка выбором}
procedure TKlas1.Sort1;
var min,mini,k,i,j:integer;
begin
ms1:=0;
ms2:=0;
for i:=0 to Length(a)-2 do
begin
min:=a[i];
mini:=i;
for j:=i+1 to Length(a)-1 do
begin
if a[j]<min then
begin
min:=a[j];
mini:=j;
end;
inc(ms1); {Увиличиваем число сравнений}
end;
if a[i]<>min then
begin
k:=a[i];
a[i]:=min;
a[mini]:=k;
inc(ms2); {Увиличиваем число перестановок}
end;
end;
end;
{Сортировка простыми вставками}
procedure TKlas1.Sort2;
var i,j,p:integer;
begin
ms1:=0;
ms2:=0;
a:=b;
for i:=1 to Length(a)-1 do
begin
for j:=0 to i do
begin
inc(ms1); {Увиличиваем число сравнений}
if a[j]>a[i] then
begin
p:=a[j];
a[j]:=a[i];
a[i]:=p;
inc(ms2);{Увиличиваем число перестановок}
end;
end;
end;
end;
end.
Заранее спасибо