mam napisany taki program :
Uses SysUtils;DateUtils,Windows;
Const N:=10000;
Type TTab=array[0..N] of real;
Procedura RandomTab(size:integer,varTab:TTab);
Var i:integer;
Begin
Randomize;
For i:=0 to size do Tab[i]:=random(1001)/1000;
End;
procedure ShowTab(size:integer,var Tab:TTab);
var i:integer;
begin
writeln(‘zawartosc tablicy’);
write(Tab[0]);
for i:=1 to size do write(‘; ; Tab[i];2;3);
writeln;
end;
procedure SortTab(size:integer, var Tab:TTab);
var
I,j:integer;
Tmp:real;
Begin
For i:=0 to size do
For j:=0 to i do
If Tab[i]< Tab[j] then begin
Tmp:=Tab[i];
Tab[j]:=Tab[i]
Tab[i]:=Tmp;
End;
End;
Var Tab:TTab;begin
Random Tab(N,Tab);
Show Tab(N,Tab);
{read T1}
Sort Tab(N,Tab)
{read T2}
Sort Tab(N,Tab)
{compute T2-T1};
End.
--------------------------------------------------------------------------
Macierze czasu
T:integer
1
T1:TDateTime;
T2:TDateTime;
T1:Now;{Read T1}
T2:Now;
T:=Milliseconds Beetwen (T2,T1);
{compute T2-T1}
2
T,T1,T2:integer
T1:=GetTickCount
T2:=GetTickCount;
T=T2-T1;
i do niego następujące polecenia:
1.znalesc inne metody mierzenia czasu,sortowania z dokładnoscią mniej niz milisekunda.
2.napisac inne sortowania (wykorzystac inne algorytmy minimum 5-6).
3.talbica posortowana malejaca lub rosnąco.
No i mam tu taki program napisany ale on jest pisany chyba pod linuxa a pod windowsem nie chce działac, czy ktos mogłby go przekształcic na dzialajacy pod windowsem.
program dupa;
uses linux;
const N=5000;
type ttab=array[1..N] of integer;
var t1,t2,td:cardinal;
{** timer **}
function timer:cardinal;
var
h,m,sec,msec,usec:word;
rc:cardinal;
begin
gettime(h,m,sec,msec,usec);
{* rc:=msec+sec*1000+m*60*1000+h*60*60*1000; *}
rc:=(msec+sec*1000+m*60*1000+h*60*60*1000)*1000+us ec;;
{* writeln(h,':',m,':',sec,'.',msec,' ',usec);
writeln(rc); *}
timer:=rc;
end;
{** sort **}
procedure randomtab(var T:TTab);
var i:integer;
begin
randomize;
for i:=1 to N do T[i]:=random(N)+1;
end;
procedure cleartab(var T:TTab);
var i:integer;
begin
for i:=1 to N do T[i]:=0;
end;
procedure showtab(var T:TTab);
var i:integer;
begin
for i:=1 to N do write(' ',t[i]);
writeln;
end;
procedure xchg(var T:TTab; k,n:integer);
var
tmp:integer;
begin
tmp:=T[n];
t[n]:=t[k];
t[k]:=tmp;
end;
procedure sorttab1(var T:TTab);
var
i,j:integer;
begin
for i:=1 to N do
begin
for j:=1 to i do
begin
if t[i]>t[j] then
begin
xchg(T,i,j);
end;
end;
end;
end;
procedure sorttab2(var T:TTab);
var
i:integer;
begin
i:=1;
while (i<N) do
begin
if t[i]<t[i+1] then
begin
xchg(T,i,i+1);
i:=0;
end;
inc(i);
end;
end;
procedure sorttab_linear(var r:TTab; lo,up:integer);
var
i, j : integer;
tmp : integer;
flag : boolean;
begin
for i:=up-1 downto lo do
begin
tmp := r[i];
j := i+1;
flag := true;
while (j<=up) and flag do
begin
if tmp > r[j] then
begin
r[j-1] := r[j];
j := j+1
end
else flag := false;
end;
r[j-1] := tmp;
end;
end;
PROCEDURE Quicksort (VAR A : ttab; l,r: INTEGER);
VAR
pivot,b,i,j : INTEGER;
BEGIN
IF l < r THEN
BEGIN
pivot := A[random(r-l) + l+1]; { losowanie elementu dziel±cego }
i := l-1;
j := r+1;
REPEAT
REPEAT i := i+1 UNTIL pivot <= A[i];
REPEAT j := j-1 UNTIL pivot >= A[j];
b:=A[i]; A[i]:=A[j]; A[j]:=b
UNTIL i >= j;
A[j]:=A[i]; A[i]:=b;
Quicksort(A,l,i-1);
Quicksort(A,i,r)
END
END;
var
tab,tab2,tab3,tab4:TTab;
begin
randomtab(tab);
{ cleartab(tab); }
tab2:=tab;
tab3:=tab;
tab4:=tab;
t1:=timer;
sorttab_linear(tab4,1,N);
t2:=timer;
td:=t2-t1;
writeln('Sort linear; czas wykonania: ',td,'msec');
t1:=timer;
quicksort(tab3,1,N);
t2:=timer;
td:=t2-t1;
writeln('Quicksort; czas wykonania: ',td,'msec');
t1:=timer;
sorttab1(tab2);
t2:=timer;
td:=t2-t1;
writeln('sortowanie babelkowe; czas wykonania: ',td,'msec');
t1:=timer;
sorttab2(tab);
t2:=timer;
td:=t2-t1;
writeln('Kloss-sort; czas wykonania: ',td,'msec');
writeln('** dla zerowej tablicy **');
cleartab(tab);
tab2:=tab;
tab3:=tab;
tab4:=tab;
t1:=timer;
sorttab_linear(tab4,1,N);
t2:=timer;
td:=t2-t1;
writeln('Sort linear; czas wykonania: ',td,'msec');
t1:=timer;
quicksort(tab3,1,N);
t2:=timer;
td:=t2-t1;
writeln('Quicksort; czas wykonania: ',td,'msec');
t1:=timer;
sorttab1(tab2);
t2:=timer;
td:=t2-t1;
writeln('sortowanie babelkowe; czas wykonania: ',td,'msec');
t1:=timer;
sorttab2(tab);
t2:=timer;
td:=t2-t1;
writeln('Kloss-sort; czas wykonania: ',td,'msec');
end.
--------------------------------------------------------------------------
Timer
program dupa;
uses linux;
function timer:cardinal;
var
h,m,sec,msec,usec:word;
rc:cardinal;
begin
gettime(h,m,sec,msec,usec);
rc:=msec+sec*1000+m*60*1000+h*60*60*1000;
writeln(h,':',m,':',sec,'.',msec,' ',usec);
writeln(rc);
end;
begin
timer;
end.
POMOZE MI KTOŚ BŁAGAM?