#include <ctime>
#include <iostream>
#include <limits>
using namespace std;
void sortowanie(int *tab, int n, int maximum);
// n - ile szufladek w tablicy
// *tab - przekazywanie oryginalnej tablicy do funkcji
// maximum - najwieksza liczba w tablicy, ktora chcemy sortowac
int main()
{
srand(time(NULL));
int n;
cin >> n;
int *tablica = new int [n];
int najwieksza = numeric_limits<int>::min();
for(int i = 0; i < n; i++)
{
tablica[i] = 1000000000 + rand() % 1000;
if(tablica[i] > najwieksza)
{
najwieksza = tablica[i];
}
}
clock_t start = clock();
sortowanie(tablica, n, najwieksza);
clock_t stop = clock();
double czas = (double)(stop - start) / CLOCKS_PER_SEC;
cout << "Czas wykonywania sortowania: " << czas << "s" << endl;
delete [] tablica;
return 0;
}
void sortowanie(int *tab, int n, int maximum)
{
int miejsce = 0;
for(int i = 0; i <= maximum; i++)
{
for(int j = 0; j < n; j++)
{
if(tab[j] == i)
{
int bufor = tab[miejsce];
tab[miejsce] = tab[j];
tab[j] = bufor;
miejsce++;
}
}
}
}
I2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxsaW1pdHM+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBzb3J0b3dhbmllKGludCAqdGFiLCBpbnQgbiwgaW50IG1heGltdW0pOwoKLy8gbiAtIGlsZSBzenVmbGFkZWsgdyB0YWJsaWN5Ci8vICp0YWIgLSBwcnpla2F6eXdhbmllIG9yeWdpbmFsbmVqIHRhYmxpY3kgZG8gZnVua2NqaQovLyBtYXhpbXVtIC0gbmFqd2lla3N6YSBsaWN6YmEgdyB0YWJsaWN5LCBrdG9yYSBjaGNlbXkgc29ydG93YWMKCmludCBtYWluKCkKewogICAgc3JhbmQodGltZShOVUxMKSk7CiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOwogICAgaW50ICp0YWJsaWNhID0gbmV3IGludCBbbl07CiAgICBpbnQgbmFqd2lla3N6YSA9IG51bWVyaWNfbGltaXRzPGludD46Om1pbigpOwogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICB0YWJsaWNhW2ldID0gMTAwMDAwMDAwMCArIHJhbmQoKSAlIDEwMDA7CiAgICAgICAgaWYodGFibGljYVtpXSA+IG5handpZWtzemEpCiAgICAgICAgewogICAgICAgICAgICBuYWp3aWVrc3phID0gdGFibGljYVtpXTsKICAgICAgICB9CiAgICB9CiAgICBjbG9ja190IHN0YXJ0ID0gY2xvY2soKTsKICAgIHNvcnRvd2FuaWUodGFibGljYSwgbiwgbmFqd2lla3N6YSk7CiAgICBjbG9ja190IHN0b3AgPSBjbG9jaygpOwogICAgZG91YmxlIGN6YXMgPSAoZG91YmxlKShzdG9wIC0gc3RhcnQpIC8gQ0xPQ0tTX1BFUl9TRUM7CiAgICBjb3V0IDw8ICJDemFzIHd5a29ueXdhbmlhIHNvcnRvd2FuaWE6ICIgPDwgY3phcyA8PCAicyIgPDwgZW5kbDsKICAgIGRlbGV0ZSBbXSB0YWJsaWNhOwogICAgcmV0dXJuIDA7Cn0KCnZvaWQgc29ydG93YW5pZShpbnQgKnRhYiwgaW50IG4sIGludCBtYXhpbXVtKQp7CiAgICBpbnQgbWllanNjZSA9IDA7CiAgICBmb3IoaW50IGkgPSAwOyBpIDw9IG1heGltdW07IGkrKykKICAgIHsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYodGFiW2pdID09IGkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBidWZvciA9IHRhYlttaWVqc2NlXTsKICAgICAgICAgICAgICAgIHRhYlttaWVqc2NlXSA9IHRhYltqXTsKICAgICAgICAgICAgICAgIHRhYltqXSA9IGJ1Zm9yOwogICAgICAgICAgICAgICAgbWllanNjZSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==