Witam!
Mam problem z algorytmem sortowania quicksort. Muszę go teraz wysłać na serwer na mojej uczelni, który sprawdzi czy algorytm jest dobry, jak szybko działa itp.
Za każdym razem gdy go wysyłam otrzymuję komunikat o przekroczeniu limitu czasu. Jak mozna przyspieszyc ten algorytm dla najbardziej parszywych danych??
program G;
type
tablica = array [0..4999999] of longint;
var
liczbazestawow,dlCiagu: longint;
i,x,a,b: longint;
tab: tablica;
procedure quick( var tab: tablica; var left, right: longint);
var
tmp: longint;
m,a,b: longint;
begin
if left< right then
begin
m:= left;
for i:=left+1 to right do
begin
if tab[i]<tab[left] then
begin
m:=m+1;
tmp:=tab[i];
tab[i]:= tab[m];
tab[m]:=tmp;
end;
end;
tmp:=tab[left];
tab[left]:=tab[m];
tab[m]:=tmp;
a:=m-1;
b:=m+1;
quick(tab, left,a);
quick(tab,b,right);
end;
end;
begin
readln(liczbaZestawow);
while liczbaZestawow >0 do
begin
readln(dlCiagu);
for i:=0 to dlCiagu-1 do
begin
read(x);
tab[i]:=x;
end;
a:=0;
b:=dlCiagu-1;
quick(tab, a, b);
for i:=0 to dlCiagu-1 do
begin
write(tab[i],' ');
end;
writeln;
liczbaZestawow:=liczbaZestawow-1;
end;
end.
Pozdrawiam i dziekuje!