Pascal - optymalizacja Quicksorta

Pascal - optymalizacja Quicksorta
MA
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 17 lat
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ś.

MA
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 17 lat
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 :(

ADuch
  • Rejestracja:prawie 21 lat
  • Ostatnio:ponad 13 lat
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 :

Kopiuj
DIV 2

na shr 1

Kopiuj

Nie ma ludzi zdrowych psychicznie, są tylko źle zbadani...
snw
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 4 lata
  • Postów:236
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...

brodny
  • Rejestracja:prawie 23 lata
  • Ostatnio:prawie 11 lat
0

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


Mam nadzieję, że pomogłem :) Łukasz Brodny

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.