//Autor: Artur Czekalski (Sator) www.epokaY.net/artur artur@epokaY.net import std.stdint; //int64_t import std.c.windows.windows; //GetTickCount import std.stdio; //writefln const int RozTab = 10000000; //rozmiar tablicy double Tab[]; //tablica do posortowania -dynamiczna bo mozna Max 16 MB na stosie! //--------------------------------------------------------------------------- double x; //wartosc sortowana double w; //element do zamiany (takiego samego typu co Tab) //--------------------------------------------------------------------------- void QuickSort(int l, int p) //tylko dwa konieczne parametry, bo funkcja jest rekurencyjna { int i = l, j = p; x = Tab[(l+p)/2]; //kryterium sortowania do {while (Tab[i] < x) ++i; //x -malejaco while (x < Tab[j]) --j; //x< -rosnaco; x< -malejaco if (i <= j) {w=Tab[i]; Tab[i]=Tab[j]; Tab[j]=w; ++i; --j; } } while (i < j); if (l < j) QuickSort(l, j); if (i < p) QuickSort(i, p); } //=========================================================================== int main(char[][] args) { int i, czas; Tab = new double[RozTab]; for (i=0; i Tab[i]) {writefln("Nie posortowane od elementu nr ", i); break;} delete Tab; //--- writef("\nDigitalMars D v0.162/2.0: Czas=%d", czas); getchar(); return 0; }