Pascal - optymalizacja Quicksorta

0

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!

0

To mi nie wygląda na qsort - coś tam chyba zrypałeś.

0

Sprawdzilam kod z jeszcze inna strona, na ktorej tez byl kod quicksorta i sie niczym nie rozni. Wydaje mi sie ze jest to quicksort, tylko za wolno dziala :(

0

tutaj masz quick sort, nieco sie różni od twojego :
http://www.i-lo.tarnow.pl/edu/inf/alg/algsort/pages/018.php
btw... zastąp tam :

DIV 2

na shr 1

0

z tego co gdzieś przeczytałem niedawno algorytm quicksort sam w sobie jest już bardzo zoptymalizowany więc trodno mówić o jakiejkolwiek daleko idącej jego dalszej optymalizacji...

0

Dokładnie - może go trochę przyspieszysz, ale nie zmienisz klasy algorytmu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1