Witam serdecznie. Napisałem program w którym zaimplementowałem algorytm QuickSort. Potrzebuję wiedzieć ile się on wykonuje dla różnej ilości elementów tablicy. Wykorzystałem adres do zegara czasu rzeczywistego ($0040:$006C) który działa w TP, ale nie działa w FP... (albo nie umiem go tam zaimplementować). A potrzebuję FP dlatego że rozmiar tablicy jest większy niż 64k (TP takich tablic nie obsługuje). Jakieś sugestie? Poniżej kod programu:
program QSort;
uses Crt, Dos;
const
MAX = 100000;
type
tab = array[1..Max] of longint;
var
t: tab;
i: longint;
c: char;
tt: Longint absolute $0040:$006C;
tb, te:Longint;
procedure QuickSort(var A: tab; Lo, Hi: longint);
procedure Sort(l, r: longint);
var
i, j, x, y: longint;
begin
i := l; j := r; x := a[(l+r) DIV 2];
repeat
while a[i] < x do i := i + 1;
while x < a[j] do j := j - 1;
if i <= j then
begin
y := a[i]; a[i] := a[j]; a[j] := y;
i := i + 1; j := j - 1;
end;
until i > j;
if l < j then Sort(l, j);
if i < r then Sort(i, r);
end;
begin
Sort(Lo,Hi);
end;
begin
clrscr;
Write('Wypelnianie tablicy przypadkowymi wartosciami.');
Randomize;
for i := 1 to Max do t[i] := Random(100000);
Writeln;
Writeln('Zrobione. Nacisnij ENTER aby posortowac wartosci.');
Readln;
tb := tt;
QuickSort(t, 1, Max);
te := tt;
writeln ('Procedura wykonywała się ',(te-tb)/100:0:2,' s');
Writeln('Posortowane.');
Writeln('Jezeli chcesz wypisac posortowane dane to wcisnij "c" i enter, w przeciwnym razie wcisnij ENTER.');
Readln(c);
if c='c' then
for i := 1 to max do Writeln(t[i], ' ') else;
readln;
end.