Sortowanie

"Przestawne"

...
var a:array[1..10000] of Integer;
    n,x,i,j,k:integer;
    t1,t2:TDateTime;
...
begin
 //czyszczenie Memo
 Memo1.Clear;
 Memo2.Clear;
 //odczyt ilości elementów tablicy z Edit1
 n:=StrtoInt(Edit1.text);
 //zapełnianie tablicy liczbami losowymi z zakresu: 0..999
 for i:=1 to n do a[i]:=random(1000);
 //wizualizacja tablicy nieposortowanej
 if CheckBox1.Checked then
  for i:=1 to n do
   Memo1.Lines.Add(InttOStr(i)+') '+IntToStr(a[i]));
 //sortowanie metodą wyszukiwania wartości min/max
 //w iteracyjnie skracanym podciągu liczb
 t1:=now; //stoper start!
 for i:=1 to n-1 do
 begin
  k:=i;
  for j:=i+1 to n do
   if a[k]>a[j] then k:=j;
  x:=a[k];
  a[k]:=a[i];
  a[i]:=x;
 end;
 t2:=now; //stoper stop!
 //wizualizacja tablicy posortowanej
  if CheckBox1.Checked then
   for i:=1 to n do
    Memo2.Lines.Add(InttOStr(i)+') '+IntToStr(a[i]));
 //wizualizacja czasu sortowania
 Label1.Caption:=FloatToStr((t2-t1)*24*60*60*1000)+' [ms]'
end;

"Bąbelkowe"

...
var a:array[1..10000] of Integer;
    n,x,i:integer;
    t1,t2:TDateTime;
    koniec:boolean;
...
begin
 //czyszczenie Memo
 Memo1.Clear;
 Memo2.Clear;
 //odczyt ilości elementów tablicy z Edit1
 n:=StrtoInt(Edit1.text);
 //zapełnianie tablicy liczbami losowymi z zakresu: 0..999
 for i:=1 to n do a[i]:=random(1000);
 //wizualizacja tablicy nieposortowanej
 if CheckBox1.Checked then
  for i:=1 to n do
   Memo1.Lines.Add(InttOStr(i)+') '+IntToStr(a[i]));
 //sortowanie metodą "bąbelkową"
 t1:=now; //stoper start!
 repeat
  koniec:=true;
  for i:=1 to n-1 do
   if a[i]>a[i+1] then
   begin
    x:=a[i];
    a[i]:=a[i+1];
    a[i+1]:=x;
    koniec:=false
   end;
 until koniec;
 t2:=now; //stoper stop!
 //wizualizacja tablicy posortowanej
  if CheckBox1.Checked then
   for i:=1 to n do
    Memo2.Lines.Add(InttOStr(i)+') '+IntToStr(a[i]));
 //wizualizacja czasu sortowania
 Label2.Caption:=FloatToStr((t2-t1)*24*60*60*1000)+' [ms]'
end;