//Autor: Artur Czekalski (Sator) www.epokaY.net/artur artur@epokaY.net program Project1; {$APPTYPE CONSOLE} uses SysUtils, windows; //--------------------------------------------------------------------------- const RozTab: Integer = 10000000; //rozmiar tablicy var Tab: array [0..10000000-1] of Double; //tablica do posortowania //--------------------------------------------------------------------------- x: Double; //wartość sortowana w: Double; //element do zamiany (takiego samego typu co Tab) //--------------------------------------------------------------------------- Procedure QuickSort(const l: Integer; const p: Integer); //tylko dwa konieczne parametry, bo funkcja jest rekurencyjna var i, j :Integer; begin i := l; j := p; x := Tab[(l+p) div 2]; //kryterium sortowania repeat begin while Tab[i] < x do Inc(i); //x -malejąco while x < Tab[j] do Dec(j); //x< -rosnąco; x< -malejąco If i <= j Then begin w:=Tab[i]; Tab[i]:=Tab[j]; Tab[j]:=w; Inc(i); Dec(j); end; end; until (i >= j); If l < j Then QuickSort(l, j); If i < p Then QuickSort(i, p); end; //--------------------------------------------------------------------------- var czas: Cardinal; i: Integer; begin For i:=0 To RozTab-1 Do Tab[i] := RozTab-i + (i mod 17) + (i mod 991) + (i mod 12345); czas := GetTickCount; QuickSort(0, RozTab-1); czas := GetTickCount - czas; //--Sprawdzenie posortowania For i:=1 To RozTab-1 Do If Tab[i-1] > Tab[i] Then begin writeln('Nie posortowane od elementu nr ', i); break; end; writeln('Delphi 7: Czas=', czas); readln; end.