eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingsortowanieRe: sortowanie
  • Data: 2012-10-14 12:42:27
    Temat: Re: sortowanie
    Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2012-10-14 09:39, M.M. pisze:
    > W dniu niedziela, 14 października 2012 08:15:43 UTC+2 użytkownik kenobi napisał:
    >> hehe, mi sie tez kojarzy jako if z 20ma poziomami zaglebbienia i 2^20 'klauzulami'
    na koniec ;-) No ale nie wiem jak wygladalaby
    >>
    >> (ile wierszy) optymalizowana wersja takiego ifu
    >
    > Moze inspiracji nalezy szukac w sekcji "Optymalne sortowanie"
    > http://pl.wikipedia.org/wiki/Sie%C4%87_sortuj%C4%85c
    a

    Nie do końca, ale...*)
    To trochę inne zagadnienia.
    Zauważ, że posortowanie 5 elementów
    wymaga 9 komparatorów. Czyli 9 porównań.
    Wiemy, że wystarczy 7.

    Sieć sortująca nie ma 'ifów' mogących
    diametralnie zmienić działanie w zależności
    od wyniku, może tylko porównywać pary
    w ustalonej kolejności.

    Po pierwszych 2 porównaniach możemy mieć wiedzę
    postaci a<-b<-c lub a<-b->c i zależnie od tego
    należy działć ciut inaczej.


    Za to mają inna przewagę. Cześć porównan moze być
    równoległa, więc głębokość wynosi (wg wiki) 5.
    Wynik będzie w czasie wykonania 5 kolejnych porównań.
    (tylko czasem wykona się dwa).

    O, znalazłem ciekawą stronę.
    http://pages.ripco.net/~jgamble/nw.html

    http://jgamble.ripco.net/cgi-bin/nw.cgi?inputs=5&alg
    orithm=batcher&output=svg

    Zgadza się.

    I teraz do naszego ale. Jest to ewidentnie gorsze rozwiązanie
    niż algorytm optymalny, czy nawet przywoływany przez PK
    Ford and Johnson Merge-Insertion Sort (który dla 10 elementów
    ma optymalne 22 porównania). Hmm, a nawet insertsorta
    z wyszukiwaniem binarnym.
    user.it.uu.se/~fm/Courses/AA/2000/h6.ps

    Za to jest znacznie prostszy.

    I wykorzystuje 29 porównań
    http://jgamble.ripco.net/cgi-bin/nw.cgi?inputs=10&al
    gorithm=best&output=svg

    Można więc pociągnąć Twój sposób z http://pastebin.com/RGhkx6u6

    Mógłbyś użyć takiego ciągu (uwaga, zrobione automatycznie
    z wyników podanych przez stronę). daj znać, czy przebija sort10;)

    static inline void sort10_N( typs d[] ) {
    sort( d[4] , d[9] );
    sort( d[3] , d[8] );
    sort( d[2] , d[7] );
    sort( d[1] , d[6] );
    sort( d[0] , d[5] );
    sort( d[1] , d[4] );
    sort( d[6] , d[9] );
    sort( d[0] , d[3] );
    sort( d[5] , d[8] );
    sort( d[0] , d[2] );
    sort( d[3] , d[6] );
    sort( d[7] , d[9] );
    sort( d[0] , d[1] );
    sort( d[2] , d[4] );
    sort( d[5] , d[7] );
    sort( d[8] , d[9] );
    sort( d[1] , d[2] );
    sort( d[4] , d[6] );
    sort( d[7] , d[8] );
    sort( d[3] , d[5] );
    sort( d[2] , d[5] );
    sort( d[6] , d[8] );
    sort( d[1] , d[3] );
    sort( d[4] , d[7] );
    sort( d[2] , d[3] );
    sort( d[6] , d[7] );
    sort( d[3] , d[4] );
    sort( d[5] , d[6] );
    sort( d[4] , d[5] );
    }


    A, stronka sama generuje takie 'swap macros'.

    pzdr
    bartekltg




Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: