eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › sortowanie
Ilość wypowiedzi w tym wątku: 567

  • 141. Data: 2012-10-14 19:43:55
    Temat: Re: sortowanie
    Od: kenobi <p...@g...com>

    W dniu niedziela, 14 października 2012 18:57:57 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2012-10-14 18:45, kenobi pisze:
    >
    >
    >
    > >
    >
    > > jak rozumiesz co mowie to moglbys sie
    >
    > > do tego odniesc
    >
    >
    >
    > Ty nie masz zamiaru czytać (i to od paru
    >
    > postów i chyba 2 dni) to ja nie będę się
    >
    > produkował i przepisywał podręcznika.
    >
    >
    >
    > Załapałeś counting sorta. Chcesz go rozwinąć,
    >
    > ale bujasz się między stworzeniem z niego radix
    >
    > sorta (czyli kilkakrotnie przez zliczanie)
    >
    > i kubełkowego.
    >
    >
    >
    >
    >
    > > to inne pytanie ;) jakim algorytmem postortowalbys
    >
    > > 1) milion unsigned shortow
    >
    > > 2) milion unsigned intow ?
    >
    >
    >
    > Zależy od warunków. W normalnych: std::sort().
    >
    >
    >
    > W jakiś specyficznych, gdy to jest ważne
    >
    > i rzeczywiście tam siedzi wąskie gardło
    >
    > algorytmu, w przypadku [1] dałbym przez zliczanie
    >
    > (zwłaszcza, że nie wymagasz stabilności!),
    >
    > a w [2] zastanowiłbym się nad pozycyjnym
    >
    > (2 razy przez zliczanie).
    >
    >
    >
    > pzdr
    >
    > bartekltg
    >
    >
    >
    >
    >
    > Tak mi się przypomniało:
    >
    > http://en.wikipedia.org/wiki/Dutch_national_flag_pro
    blem





    wobec tego ze sa to wlasnie te metody o
    ktorych mowie od samego poczatku nazywajac je
    sposobem kasperskiego - wobec czego ty
    oponujesz oprocz nazewnictwa ?

    [ czy wczesniej nim zaczalem mowic o tych
    metodach (nazywajac je metodami ksperskiego)
    tez bys ich uzyl? czy jawily ci sie juz wczesniej
    jako najprawdopodobniej jedyny powazny sposob w
    podobnych wypadkach (zwlaszcza w tym pierwszym),
    tak jak to wlasnie wyraznie naswietlil kasperski?

    To jest pytanie pomocnicze majace na celu
    ustelenie wobec czego ty oponujesz w stosunku
    do kasperskiego

    (Pytam bo jakies oponowanie jakby tu sie pojawilo
    i komplenie serio nie wiem o co chodzi)

    pozatym

    w tym drugim wypadku (z intami) - jak dokladnie?
    (kod w c) bo to jest druga czesc tego o czym ja tu pisze


  • 142. Data: 2012-10-14 19:56:40
    Temat: Re: sortowanie
    Od: kenobi <p...@g...com>

    tamte hasla przeczytalem ale sa to dosyc
    ogolnikowe nazwy ogolnikowo zarysowanych
    sposobow i nie precyzuja one dokladnie tego
    o czym ja mowie - (wlasnie juz ta krytykowana
    nazwa metoda kasperskiego o wiele dokladniej
    mowi o co mi chodzi


  • 143. Data: 2012-10-14 20:01:11
    Temat: Re: sortowanie
    Od: bartekltg <b...@g...com>

    W dniu 2012-10-14 19:43, kenobi pisze:

    > wobec tego ze sa to wlasnie te metody o
    > ktorych mowie od samego poczatku nazywajac je
    > sposobem kasperskiego - wobec czego ty
    > oponujesz oprocz nazewnictwa ?

    Myleniem pozycyjnego z kubełkowym
    i wymyślaniu od nowa pozycyjnego z błędem
    w konstrukcji.

    > [ czy wczesniej nim zaczalem mowic o tych
    > metodach (nazywajac je metodami ksperskiego)
    > tez bys ich uzyl?

    W post wyżej wyspecyfikowanych okolicznościach
    - oczywiście.

    Ty nam nie pokazałeś nowego algorytmu. Podejrzewam,
    że _wszyscy_ tu wiedzieli o jego istnieniu.

    Zobacz zresztą na reakcję po tamtym poście.
    Ludzie się albo póbują domyśleć, co tam napisałeś,
    albo mówią 'no, ja 30 lat temu też się zachwycilem'.

    > czy jawily ci sie juz wczesniej
    > jako najprawdopodobniej jedyny powazny sposob w
    > podobnych wypadkach (zwlaszcza w tym pierwszym),
    > tak jak to wlasnie wyraznie naswietlil kasperski?

    Dobrze się czujesz? Światopogląd Ci się obalił?
    Ludzie zajmujący się programowaniem znają
    zliczanie, a kasperski to antywirus.


    > To jest pytanie pomocnicze majace na celu
    > ustelenie wobec czego ty oponujesz w stosunku
    > do kasperskiego

    Kasperski wywołał kiepskie wrażenie*). Taki chłopek
    roztropek z usenetu odkrywającego na nowo koło
    i nie potrafiącego zrozumieć zadania na konkursie
    i swojego błędu (skoro się nim chwali).

    W dodatku bezczelnie oszukuje, pisząc nieprawde w ksiażce,
    co już naświetlił Michoo. Co zresztą bardzo źle wróży
    reszcie książki, skądinąd o interesującym temacie.

    *) na podstawie tego fragmentu. Nadal nie wiem, kto to
    jest.

    > (Pytam bo jakies oponowanie jakby tu sie pojawilo
    > i komplenie serio nie wiem o co chodzi)


    > w tym drugim wypadku (z intami) - jak dokladnie?

    Najpierw dla 2 niższych bajtów, potem dla 2 wyzszych.
    Tablica pomocnicza tylko jedna, raz z oryginału lecimy
    na pomocniczą, drugim razem z powrotem.

    > (kod w c) bo to jest druga czesc tego o czym ja tu pisze

    Mam Ci kod napisać? A za ile;>

    Czytaj wiki, czytaj googla, pewnie bez trudu znajdziesz.

    pzdr
    bartekltg





  • 144. Data: 2012-10-14 20:14:07
    Temat: Re: sortowanie
    Od: bartekltg <b...@g...com>

    W dniu 2012-10-14 19:56, kenobi pisze:
    > (wlasnie juz ta krytykowana
    > nazwa metoda kasperskiego o wiele dokladniej
    > mowi o co mi chodzi

    Jakim cudem mówi, jak odwołuje
    sie do nazwiska, w dodatku kojarzącego się
    co najwyżej z antywirusem?

    Dobra, kończę ten jałowy temat, bo to bez sensu.

    BTW, Póki nie zobaczę w sieci wiarygodnych źródeł
    określających takim mianem ten algorytm, będę
    ostentacyjnie nie rozumiał tej nazwy;)

    pzdr
    bartekltg


  • 145. Data: 2012-10-14 20:14:49
    Temat: Re: sortowanie
    Od: kenobi <p...@g...com>

    W dniu niedziela, 14 października 2012 20:01:19 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2012-10-14 19:43, kenobi pisze:
    >
    >
    >
    > > wobec tego ze sa to wlasnie te metody o
    >
    > > ktorych mowie od samego poczatku nazywajac je
    >
    > > sposobem kasperskiego - wobec czego ty
    >
    > > oponujesz oprocz nazewnictwa ?
    >
    >
    >
    > Myleniem pozycyjnego z kubełkowym
    >
    > i wymyślaniu od nowa pozycyjnego z błędem
    >
    > w konstrukcji.
    >

    w jaki sposob mylenie i z jakim bledem ?



    >
    >
    > > [ czy wczesniej nim zaczalem mowic o tych
    >
    > > metodach (nazywajac je metodami ksperskiego)
    >
    > > tez bys ich uzyl?
    >
    >
    >
    > W post wyżej wyspecyfikowanych okolicznościach
    >
    > - oczywiście.
    >
    >
    >
    > Ty nam nie pokazałeś nowego algorytmu. Podejrzewam,
    >
    > że _wszyscy_ tu wiedzieli o jego istnieniu.
    >
    >
    >
    > Zobacz zresztą na reakcję po tamtym poście.
    >
    > Ludzie się albo póbują domyśleć, co tam napisałeś,
    >
    > albo mówią 'no, ja 30 lat temu też się zachwycilem'.
    >
    >
    >
    > > czy jawily ci sie juz wczesniej
    >
    > > jako najprawdopodobniej jedyny powazny sposob w
    >
    > > podobnych wypadkach (zwlaszcza w tym pierwszym),
    >
    > > tak jak to wlasnie wyraznie naswietlil kasperski?
    >
    >
    >
    > Dobrze się czujesz? Światopogląd Ci się obalił?
    >
    > Ludzie zajmujący się programowaniem znają
    >
    > zliczanie, a kasperski to antywirus.
    >
    >

    no niezupelnie, spodziewam sie ze coponiektorzy
    znaja zliczanie, ale mz do swiadomosci wielu
    swiadomosc tego jak dobra to jest metoda niezbyt sie przetarła



    >
    >
    >
    > > To jest pytanie pomocnicze majace na celu
    >
    > > ustelenie wobec czego ty oponujesz w stosunku
    >
    > > do kasperskiego
    >
    >
    >
    > Kasperski wywołał kiepskie wrażenie*). Taki chłopek
    >
    > roztropek z usenetu odkrywającego na nowo koło
    >
    > i nie potrafiącego zrozumieć zadania na konkursie
    >
    > i swojego błędu (skoro się nim chwali).
    >
    >
    >
    > W dodatku bezczelnie oszukuje, pisząc nieprawde w ksiażce,
    >
    > co już naświetlił Michoo. Co zresztą bardzo źle wróży
    >
    > reszcie książki, skądinąd o interesującym temacie.
    >

    no nieladnie,

    >
    >
    > *) na podstawie tego fragmentu. Nadal nie wiem, kto to
    >
    > jest.
    >
    >
    >
    > > (Pytam bo jakies oponowanie jakby tu sie pojawilo
    >
    > > i komplenie serio nie wiem o co chodzi)
    >
    >
    >
    >
    >
    > > w tym drugim wypadku (z intami) - jak dokladnie?
    >
    > Najpierw dla 2 niższych bajtów, potem dla 2 wyzszych.
    >
    > Tablica pomocnicza tylko jedna, raz z oryginału lecimy
    >
    > na pomocniczą, drugim razem z powrotem.
    >
    >
    >
    > > (kod w c) bo to jest druga czesc tego o czym ja tu pisze
    >
    >
    >
    > Mam Ci kod napisać? A za ile;>
    >
    >
    >
    > Czytaj wiki, czytaj googla, pewnie bez trudu znajdziesz.
    >
    >
    >
    > pzdr
    >
    > bartekltg


  • 146. Data: 2012-10-14 22:19:00
    Temat: Re: sortowanie
    Od: bartekltg <b...@g...com>

    W dniu 2012-10-14 20:01, bartekltg pisze:
    >> w tym drugim wypadku (z intami) - jak dokladnie?
    >
    > Najpierw dla 2 niższych bajtów, potem dla 2 wyzszych.
    > Tablica pomocnicza tylko jedna, raz z oryginału lecimy
    > na pomocniczą, drugim razem z powrotem.
    >
    >> (kod w c) bo to jest druga czesc tego o czym ja tu pisze
    >
    > Mam Ci kod napisać? A za ile;>


    Niech będzie dzień dobroci.
    Przetestowane, porównane z std::sort
    Na przedziale n 10^5 - 10^7 przewaga 2 do 3.5 raza
    szybsze. Co ciekawe, przewaga pozycyjnego od pewnego
    momentu maleje.


    void pozycyjne(unsigned int * tab, int n)
    {
    const int shift = 16;
    const int K = 1<<shift;

    int * h = new int [K];
    unsigned int * temp = new unsigned int [n];


    for (int j=0;j<K;j++) //zerowanie
    h[j]=0;

    for (int j=0;j<n;j++)//zliczanie wystąpień
    h[(unsigned short)(tab[j])]++;

    for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    h[j]+=h[j-1]; //na indeksy

    for (int j=0;j<n;j++)//kopiowanie
    {
    temp[--h[(unsigned short)tab[j]]]=tab[j];
    }
    ///////////faza druga
    for (int j=0;j<K;j++) //zerowanie
    h[j]=0;

    for (int j=0;j<n;j++)//zliczanie wystąpień
    h[(unsigned short)(temp[j]>>shift)]++;

    for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    h[j]+=h[j-1]; //na indeksy

    for (int j=n-1;j>=0;j--)//kopiowanie
    {
    tab[--h[(unsigned short)temp[j]>>shift]]=temp[j];
    }

    delete[]temp;
    delete[]h;

    }

    pzdr
    bartekltg


  • 147. Data: 2012-10-14 22:42:56
    Temat: Re: sortowanie
    Od: kenobi <p...@g...com>

    W dniu niedziela, 14 października 2012 22:19:08 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2012-10-14 20:01, bartekltg pisze:
    >
    > >> w tym drugim wypadku (z intami) - jak dokladnie?
    >
    > >
    >
    > > Najpierw dla 2 niższych bajtów, potem dla 2 wyzszych.
    >
    > > Tablica pomocnicza tylko jedna, raz z oryginału lecimy
    >
    > > na pomocniczą, drugim razem z powrotem.
    >
    > >
    >
    > >> (kod w c) bo to jest druga czesc tego o czym ja tu pisze
    >
    > >
    >
    > > Mam Ci kod napisać? A za ile;>
    >
    >
    >
    >
    >
    > Niech będzie dzień dobroci.
    >
    > Przetestowane, porównane z std::sort
    >
    > Na przedziale n 10^5 - 10^7 przewaga 2 do 3.5 raza
    >
    > szybsze. Co ciekawe, przewaga pozycyjnego od pewnego
    >
    > momentu maleje.
    >
    >
    >
    >
    >
    > void pozycyjne(unsigned int * tab, int n)
    >
    > {
    >
    > const int shift = 16;
    >
    > const int K = 1<<shift;
    >
    >
    >
    > int * h = new int [K];
    >
    > unsigned int * temp = new unsigned int [n];
    >
    >
    >
    >
    >
    > for (int j=0;j<K;j++) //zerowanie
    >
    > h[j]=0;
    >
    >
    >
    > for (int j=0;j<n;j++)//zliczanie wystąpień
    >
    > h[(unsigned short)(tab[j])]++;
    >
    >
    >
    > for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    >
    > h[j]+=h[j-1]; //na indeksy
    >
    >
    >
    > for (int j=0;j<n;j++)//kopiowanie
    >
    > {
    >
    > temp[--h[(unsigned short)tab[j]]]=tab[j];
    >

    co tu robi to --h ? jest na pewno dobrze?


    > }
    >


    > ///////////faza druga
    >
    > for (int j=0;j<K;j++) //zerowanie
    >
    > h[j]=0;
    >
    >
    >
    > for (int j=0;j<n;j++)//zliczanie wystąpień
    >
    > h[(unsigned short)(temp[j]>>shift)]++;
    >
    >
    >
    > for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    >
    > h[j]+=h[j-1]; //na indeksy
    >
    >
    >
    > for (int j=n-1;j>=0;j--)//kopiowanie
    >
    > {
    >
    > tab[--h[(unsigned short)temp[j]>>shift]]=temp[j];
    >
    > }
    >
    >
    >
    > delete[]temp;
    >
    > delete[]h;
    >
    >
    >
    > }
    >
    >
    >
    > pzdr
    >
    > bartekltg


  • 148. Data: 2012-10-14 22:51:46
    Temat: Re: sortowanie
    Od: kenobi <p...@g...com>

    W dniu niedziela, 14 października 2012 22:19:08 UTC+2 użytkownik bartekltg napisał:
    > W dniu 2012-10-14 20:01, bartekltg pisze:
    >
    > >> w tym drugim wypadku (z intami) - jak dokladnie?
    >
    > >
    >
    > > Najpierw dla 2 niższych bajtów, potem dla 2 wyzszych.
    >
    > > Tablica pomocnicza tylko jedna, raz z oryginału lecimy
    >
    > > na pomocniczą, drugim razem z powrotem.
    >
    > >
    >
    > >> (kod w c) bo to jest druga czesc tego o czym ja tu pisze
    >
    > >
    >
    > > Mam Ci kod napisać? A za ile;>
    >
    >
    >
    >
    >
    > Niech będzie dzień dobroci.
    >
    > Przetestowane, porównane z std::sort
    >
    > Na przedziale n 10^5 - 10^7 przewaga 2 do 3.5 raza
    >
    > szybsze. Co ciekawe, przewaga pozycyjnego od pewnego
    >
    > momentu maleje.
    >
    >
    >
    >
    >
    > void pozycyjne(unsigned int * tab, int n)
    >
    > {
    >
    > const int shift = 16;
    >
    > const int K = 1<<shift;
    >
    >
    >
    > int * h = new int [K];
    >
    > unsigned int * temp = new unsigned int [n];
    >
    >
    >
    >
    >
    > for (int j=0;j<K;j++) //zerowanie
    >
    > h[j]=0;
    >
    >
    >
    > for (int j=0;j<n;j++)//zliczanie wystąpień
    >
    > h[(unsigned short)(tab[j])]++;
    >
    >
    >
    > for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    >
    > h[j]+=h[j-1]; //na indeksy
    >
    >
    >
    > for (int j=0;j<n;j++)//kopiowanie
    >
    > {
    >
    > temp[--h[(unsigned short)tab[j]]]=tab[j];
    >
    > }
    >
    > ///////////faza druga
    >
    > for (int j=0;j<K;j++) //zerowanie
    >
    > h[j]=0;
    >
    >
    >
    > for (int j=0;j<n;j++)//zliczanie wystąpień
    >
    > h[(unsigned short)(temp[j]>>shift)]++;
    >
    >
    >
    > for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    >
    > h[j]+=h[j-1]; //na indeksy
    >
    >
    >
    > for (int j=n-1;j>=0;j--)//kopiowanie
    >
    > {
    >
    > tab[--h[(unsigned short)temp[j]>>shift]]=temp[j];
    >
    > }
    >
    >
    >
    > delete[]temp;
    >
    > delete[]h;
    >
    >
    >
    > }
    >
    >
    nie rozumiem tego zlozenia, jak sortowanie tego
    co bylo posortowane po niskiej polowie po wysokiej czesci zlozy sie tak by wszystko
    bylo ok?


  • 149. Data: 2012-10-14 22:57:21
    Temat: Re: sortowanie
    Od: kenobi <p...@g...com>

    W dniu niedziela, 14 października 2012 22:51:46 UTC+2 użytkownik kenobi napisał:
    > W dniu niedziela, 14 października 2012 22:19:08 UTC+2 użytkownik bartekltg napisał:
    >
    > > W dniu 2012-10-14 20:01, bartekltg pisze:
    >
    > >
    >
    > > >> w tym drugim wypadku (z intami) - jak dokladnie?
    >
    > >
    >
    > > >
    >
    > >
    >
    > > > Najpierw dla 2 niższych bajtów, potem dla 2 wyzszych.
    >
    > >
    >
    > > > Tablica pomocnicza tylko jedna, raz z oryginału lecimy
    >
    > >
    >
    > > > na pomocniczą, drugim razem z powrotem.
    >
    > >
    >
    > > >
    >
    > >
    >
    > > >> (kod w c) bo to jest druga czesc tego o czym ja tu pisze
    >
    > >
    >
    > > >
    >
    > >
    >
    > > > Mam Ci kod napisać? A za ile;>
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > Niech będzie dzień dobroci.
    >
    > >
    >
    > > Przetestowane, porównane z std::sort
    >
    > >
    >
    > > Na przedziale n 10^5 - 10^7 przewaga 2 do 3.5 raza
    >
    > >
    >
    > > szybsze. Co ciekawe, przewaga pozycyjnego od pewnego
    >
    > >
    >
    > > momentu maleje.
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > void pozycyjne(unsigned int * tab, int n)
    >
    > >
    >
    > > {
    >
    > >
    >
    > > const int shift = 16;
    >
    > >
    >
    > > const int K = 1<<shift;
    >
    > >
    >
    > >
    >
    > >
    >
    > > int * h = new int [K];
    >
    > >
    >
    > > unsigned int * temp = new unsigned int [n];
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > >
    >
    > > for (int j=0;j<K;j++) //zerowanie
    >
    > >
    >
    > > h[j]=0;
    >
    > >
    >
    > >
    >
    > >
    >
    > > for (int j=0;j<n;j++)//zliczanie wystąpień
    >
    > >
    >
    > > h[(unsigned short)(tab[j])]++;
    >
    > >
    >
    > >
    >
    > >
    >
    > > for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    >
    > >
    >
    > > h[j]+=h[j-1]; //na indeksy
    >
    > >
    >
    > >
    >
    > >
    >
    > > for (int j=0;j<n;j++)//kopiowanie
    >
    > >
    >
    > > {
    >
    > >
    >
    > > temp[--h[(unsigned short)tab[j]]]=tab[j];
    >
    > >
    >
    > > }
    >
    > >
    >
    > > ///////////faza druga
    >
    > >
    >
    > > for (int j=0;j<K;j++) //zerowanie
    >
    > >
    >
    > > h[j]=0;
    >
    > >
    >
    > >
    >
    > >
    >
    > > for (int j=0;j<n;j++)//zliczanie wystąpień
    >
    > >
    >
    > > h[(unsigned short)(temp[j]>>shift)]++;
    >
    > >
    >
    > >
    >
    > >
    >
    > > for (int j=1;j<K;j++) //akumulacja/zmiana liczby wystąpień
    >
    > >
    >
    > > h[j]+=h[j-1]; //na indeksy
    >
    > >
    >
    > >
    >
    > >
    >
    > > for (int j=n-1;j>=0;j--)//kopiowanie
    >
    > >
    >
    > > {
    >
    > >
    >
    > > tab[--h[(unsigned short)temp[j]>>shift]]=temp[j];
    >
    > >
    >
    > > }
    >
    > >
    >
    > >
    >
    > >
    >
    > > delete[]temp;
    >
    > >
    >
    > > delete[]h;
    >
    > >
    >
    > >
    >
    > >
    >
    > > }
    >
    > >
    >
    > >
    >
    > nie rozumiem tego zlozenia, jak sortowanie tego
    >
    > co bylo posortowane po niskiej polowie po wysokiej czesci zlozy sie tak by wszystko
    bylo ok?


    w kazdym razie jesli to nie ma bledu i dziala
    to jest to sprytny kawalek kodu - dziwne jednak jakoby to mialo byc tylko 2-3 razy
    szybsze, new
    mona wyrzucic i zrobic histogramy na statycznych tablicach


  • 150. Data: 2012-10-14 23:27:58
    Temat: Re: sortowanie
    Od: bartekltg <b...@g...com>

    W dniu 2012-10-14 22:57, kenobi pisze:
    > W dniu niedziela, 14 października 2012 22:51:46 UTC+2 użytkownik kenobi napisał:
    >> ...użytkownik kenobi napisał:


    >>> co tu robi to --h ? jest na pewno dobrze?

    Na pewno jest dobrze.

    W h trzymasz liczbę wystąpień.

    Pod h[0] masz liczbę zer, pod h[1] liczbę jedynek

    Robisz sumy częściowe
    teraz pod h[0] nadal masz liczbę zer,
    ale pod h[1] liczbę zer i jedynek. pod h[2] liczbe zer,
    jedynek i dwójek.

    Ta na co pokazuje temp[ h[2] ] ?
    pokazuje na pierwsze miejsce _po_ ostatniej dwójce.
    Czyli ostatnia dwójka powinna znaleśc się na miejscu
    o jeden wcześniej.
    Robimy --h[2], pod wynikiem wkłądamy co trzeba.

    h pełni rolę _ruchomych_ wskaźników pokazujących,
    gdzie układać daną liczbę.

    Ok, przyznaje, nie jest to wersja edukacyjna,
    i zawiera trochę 'chackierskich przedwczesnych
    optymalizacji' i skrótowe konstrukcje.
    Dopiero co się nimi zachwysałeś

    być może
    temp[--h[(unsigned short)tab[j]]]=tab[j];
    ->
    kategoria = (unsigned short)tab[j];
    --h[kategoria]; //przesuwamy wskażnik tablicy dla elementow kategorii
    kategoria
    indeks = h[kategoria];
    temp[indeks] = tab[j]

    byłaby czytelniejsza;)


    >> nie rozumiem tego zlozenia, jak sortowanie tego
    >>
    >> co bylo posortowane po niskiej polowie po wysokiej czesci zlozy sie tak by
    wszystko bylo ok?

    _Sortowanie stabilne_. Jeśli w drugim sortowaniu dwa elementy są takie
    same, to ich względna kolejność pozostanie taka sama jak po pierwszym.

    > w kazdym razie jesli to nie ma bledu i dziala

    Nie ma, działa.

    > to jest to sprytny kawalek kodu - dziwne jednak jakoby to mialo byc tylko 2-3 razy
    szybsze,

    Bo tu przelatujemy po dużej tablicy 6 razy, a w qsorcie
    log(N) razy. Log2(10^7) = 23 (tak naprawdę mniej, bo
    końcówkę robi się inaczej, a do tego działa się bardziej
    'lokalnie', co jest szybsze).

    Dopiero co się szkicem tego algorytmu zachwycałeś.
    Od szkicu do implementacji droga wiedzie przez
    nieraz upierdliwe szczegóły;)

    Drzewa AVL są w idei super. Ale weź na szybko zaimplementuj
    równoważenie.

    > new mona wyrzucic i zrobic histogramy na statycznych tablicach

    Statyczna tablica na 40MB?

    To nie jest nawet zły pomysł. To głupi pomysł.

    Zrobiłem wersję z dodatkowym parametrem, buforem tworzonym
    raz na zewnątrz (poza licznikiem czasu) i przekazywanym do środka.
    Różnice były zbyt małe by warto było o nich wspominać,
    więc nawet nie pisałem.

    pzdr
    bartekltg



strony : 1 ... 10 ... 14 . [ 15 ] . 16 ... 30 ... 57


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: