Autor Zpráva
peta
Profil
http://peter-mlich.wz.cz/sorting.htm
Mi tam vychazi, ze 2 metody jsou rychlejsi nez nativni FF serazovani. konkretne Quick a Slevani. Proc? Mam tam neco spatne? Snazil jsem se, aby to melo co nejvic stejne podminky.
Vystup je mozny Graf, Cisla nebo jednorazovy Rozdily.
_es
Profil
peta:
Nepodarilo sa mi sa v tvojom chaotickom kóde zorientovať.

2 metody jsou rychlejsi nez nativni FF serazovani. konkretne Quick a Slevani. Proc?
No možno aj sú - možno len niekedy - je v tom problém? Záleží aj na počte prvkov, náhodnosti rozmiestnenia prvkov pred zoradením a pod.
peta
Profil
Mno, vyberes ze selectu algoritmus, kliknes start. Pak je mozne zobrazit vstup a vystup bud jako graf, cisla a nebo rozdily.
Pokud koukas do js kodu, tak od zacatku jsou sortovaci algoritmy a na konci je funkce, ktera resi to ostatni, jako zobrazeni a tak. A je tam pole s nazvy algoritmu, poradi by melo odpovidat select prvku.

Ten Quick funguje tak, ze si najde min, max hodnotu, spocita hranicni mez a podle ni pak roztridi data na mensi nez mez, vetsi nez mez.
Druha cast algoritmu pak uklada dalsi intervaly [a,b] pro dalsi vypocty. Pouziva k tomu pole meze[1] nebo meze[2] (sudy, lichy pruchod cyklem). Vzdycky jedno pole pouziva pro vypocet a do druheho zapisuje nove hodnoty.
1 2 4 5 3 7 6
min = 1
max = 7
min + (max-min / 2) = 1 + 6/2 = 4
<4: 1 2 4 3 -> pocet = 4 = nova mez
>4: 5 7 6 (ale algoritmus v programu to zapisuje od konce, protoze se predem nevi, kolik tech prvku bude)

1 2 4 5 3 7 6
1 2 4 3 | 5 7 6
Slevani funguje tak, ze urci hranive, ve kterych jsou data serazena. A pak ty serazene useky sleva do sebe. Druha cast programu si pak prepocita nove useky pro slevani. Pokud neco zbyde neslite (lichy pocet useku), tak se to musi pridat na konec. Preleva to z arr[1] do arr[2] a v dalsim cyklu pak opacne.
1 2 4 5 3 7 6
1 2 4 5 | 3 7 | 6
_es
Profil
peta:
No ale princípy zoraďovania si každý ľahko nájde. Z tvojho odkazu ti ťažko niekto niečo poradí. Aká je množina počiatočných prvkov, ako sú na začiatku zoradené a pod.? A asi nikto nebude podrobne študovať hentaký zdrojový kód.
peta
Profil
_es:
Tam je script, ktery vygeneruje 10.000 hodnot. Zamicha je. Pokazdem spusteni je to jinak, ale ty casy jsou vicemene podobne. Nejvic se casy lisi pri prvnim spusteni algoritmu. Pak uz to ma FF nejak optimalizovane a po tretim vyklikani uz se nemeni.
Netvrdim, ze to nekdo musi studovat, prochazet. Jen mi to prijde podivne. Je mozne, ze FF nepouziva nejlepsi algoritmus z dobreho duvodu, treba zachovani poradi pro stejne prvky a pod (ted si nejsem jisty, jestli to slevani udrzi nebo zmeni, uz je to dlouho, co jsem se tim zabyval podrobne, ted jsem to jen spravil a zprovoznil). Nebo ho nema optimalizovany. Ocekavam, ze pokud nekdo tohle vi, tak mi to rekne.

Samotne serazeni javascriptem tam provadim funkcemi sortCondition a sortJs, na nich nenajds vubec nic zvlastniho. Jen cas pro jejich vykonani se dost lisi.
function sortCondition(a,b)
{
return a - b;
}
function sortJs(cond)
{
arr[1].sort(cond);
return 1;
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0