• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    SLUPKA
    SLUPKA --- ---
    funkce qsort by měla vypadat cca takto:

    public static void quickSort(int [] arrayInput) {
       quickSort(arrayInput, 0, arrayInput.Length);
    }


    a pak napíšeš metodu
    private static void quickSort(int[] arrayInput, int from, int to) {
    ...
    }
    SLUPKA
    SLUPKA --- ---
    CERMINEK: však jsem ti psal, jak to funguje, tohle ti nepůjde ani zkompilovat :)) ty musíš mít funkci na QS, která bere pole a rozsah ve kterém bude pracovat... volá se rekurzivně... a poprvé to zavoláš na interval od 0 do array.length (či array.length - 1, podle implementace)...
    CERMINEK
    CERMINEK --- ---
    Ještě k tomu Quick Sortu... našel jsem hodně kódů již hotových, jeden jsem si půjčil, ale v tomhle dů nesmí být použity třídy, tak řeším jak v začátku fce autovaticky zvolit hranice pro quick sort... nemám ale tucha jak.. Nemáte někdo nějaký nápad?

    Jinak mi vše běhá, tak jak má...

    [C#] cerminek - Pastebin.com
    http://pastebin.com/PkLaW07T
    SLUPKA
    SLUPKA --- ---
    KERRAY: Pracuji už dost dlouho... A proti škole je to dost velká pohoda... Ale to je na dlouhou diskuzi :)) A navíc, není škola, jako škola, věřím, že na jiných školách je to o něčem jiném :))
    KERRAY
    KERRAY --- ---
    haha, a to ještě počkejte, až někam nastoupíte do práce :p
    SLUPKA
    SLUPKA --- ---
    ISUBA: hele, škola mne udržuje ve špatném rozpoložení už pět let... a stejně tu diplomku nějak budu muset dopsat... tak zkousni zuby a zvládni to... další věci pak půjdou o to snadněji...
    ISUBA
    ISUBA --- ---
    KEDRIGERN: Vzhledem k okolnostem, nejsem v nejlepším rozpoložení... Nějak si však poradím. Děkuji.
    KEDRIGERN
    KEDRIGERN --- ---
    ISUBA: http://www.algoritmy.net/article/65/Eratosthenovo-sito
    Bych ti to i napsal, ale nebylo by to moc seriozní vůči tvému vzdělání. I pokud neumíš skoro nic, tak jsou to max. 2-3h.
    ISUBA
    ISUBA --- ---
    PIGSTER: Děkuji za poučení, kultivovaný kolego.
    PIGSTER
    PIGSTER --- ---
    ISUBA: sry ale musim - tohle je tak debilne trivialni, ze se to da s pristupem na internet napsat za hodinu v pul paty rano a to pomijim fakt, ze si s tim vytapetoval hned nekolik klubu ....
    SLUPKA
    SLUPKA --- ---
    ISUBA: googli eratosthenovo síto...

    a mimochodem, sem by se to hodilo asi více
    [ Algoritmy všeho druhu :: podělte se, pochlubte se, diskutujte etc... ]
    ISUBA
    ISUBA --- ---
    Zdravím všechny. Nenašel by se někdo, kdo by mi pomohl s tímto zadáním v C:

    "Napište program, který po zadnání čísla vypíše:
    a) všechna prvočísla, až do hranice (včetně) zadané uživatelem (pozn. 1 není prvočíslo)
    b) zadaný počet prvočísel počínaje 2kou
    c) spojte obě zadání do jednoho programu – volbu co zadané číslo bude znamenat provede
    uživatel zadáním znaku 'a' nebo 'b' v úvodu běhu programu. Program musí být schopen
    reagovat i na špatně zadanou volbu. (např. 'c')"

    Nestíhám a nevím si s tím rady, což je smrtelná kombinace.
    SLUPKA
    SLUPKA --- ---
    SLUPKA: Jestli ten kód budeš psát v C nebo C# bude u QS docela minimální rozdíl...
    SLUPKA
    SLUPKA --- ---
    CERMINEK: to už není moc otázka v C#, ale QS funguje cca následujícím způsobem:

    - pokud je QS zavolán na pole o velikosti jedna, tak nedělá nic, vrací nezměněné pole (je již seřazené)

    - když je QS zavolán na delší pole, tak nejdříve zvolí nějakým způsobem pivot (třeba první prvek v poli) a rozdělíš pole na dvě pole - prvky které jsou <= než pivot a prvky > pivot... a pak zavoláš rekurzivně QS na první a na druhé pole... první i druhé pole se ti vrátí seřazené, když je dáš za sebe, tak máš seřazené celé původní pole a to vrátíš

    No a tohle byl teoretický popis, prakticky se to dělá tak, že se nevytváří žádný další pole, ale dělá se to v oblasti toho pole. Ten index odkud a kam ti určuje, s jakým polem pracuješ (to kolem jakoby neexistovalo). A ty uděláš to, že v rámci této oblasti vybereš pivot a přeuspořádáš prvky této části tak, aby jsi na začátku měl opět prvky <= pivot a pak zavoláš QS na tuto oblast a QS na zbylou oblast.

    Takže první zavolání QS musí být od začátku až do konce pole, aby to fungovalo :))
    CERMINEK
    CERMINEK --- ---
    SLUPKA: http://pastebin.com/tGAk2jtw Už to fachá, jen musím vyřešit samotný Quck sort... Kdy dumám nad nějakou vhodnou volbou hranic oblasti...
    SLUPKA
    SLUPKA --- ---
    CERMINEK: Co se týká quicksortu, tak se mi nechce studovat ten kód, pokud by byl opravdu blbě, tak to přepostni pořádně, rovnou z visualka do pastebinu.

    Ale řádek
    polequick = quick(pole,5,5);//srovná 'pole' metodou quick sort do pole 'polequick'
    podle mého dobře nebude :))

    Jdu spát, snad to uvidíš :))
    CERMINEK
    CERMINEK --- ---
    ESY:
    SLUPKA:
    Supér díky moc! Už to generuje jak má!

    Ještě doladím ten Quick Sort a hotovo... To by bylo abych se ten C# nenaučil.. ale pořád mám tendence psát assemblerovský a C příkazy... Ještě, že C je tomu blízské a VisuaStudio má tu vlezlou nápovědu :)
    SLUPKA
    SLUPKA --- ---
    CERMINEK:
    for (int i = 0; i < velikost; i++)
    {
    Random j = new Random();
    polecisel[i] = j.Next(-100, 100);
    }

    to je z tohoto důvodu... generátor náhodných čísel si vytvoř jeden a ten používej... když voláš new Random(), tak se ti do něj dá seed v závislosti na čase a Next pak pracuje deterministicky v závislosti na tom seedu, takže ze stejného seedu udělá stejné číslo...
    ESY
    ESY --- ---
    ESY: takze kdyz krokujes tak je ten cas jinej
    ESY
    ESY --- ---
    CERMINEK: nepouzivej new Random();
    ale .Next() ...
    Random se generuje z casu. ty vytvoris pokazdy stejnou vec v stejnej cas..
    Kliknutím sem můžete změnit nastavení reklam