Portál AbcLinuxu, 13. listopadu 2025 21:58
A Freshmouse by si konečně mohl koupit ty "správný amíky".
(A já bych si je měl přečíst.
)
Nemluvíte. To co navrhuješ ty je blbost. Obecný binární vyhledávací strom má MIN i MAX vždy v listu. Takže odtamtud se těžko vydáš "dolů". (A kdyby tě snad napadlo jít "nahoru", tak n kroků ti taky nezaručuje nalezení n-tého prvku)
Jinak obecně se pod O(N*log(N)) nelze dostat, neboť nalezení n-tého prvku z podstaty věci vyžaduje seřazení pole a to rychleji (pomocí algoritmů založených na porovnávání) než O(N*log(N)) nelze provést.
Jinak obecně se pod O(N*log(N)) nelze dostat, neboť nalezení n-tého prvku z podstaty věci vyžaduje seřazení pole a to rychleji (pomocí algoritmů založených na porovnávání) než O(N*log(N)) nelze provést.Proč by to vlasně mělo vyžadovat seřazení pole? A proč by ho pak nemělo vyžadovat nalezení druhého největšího prvku? P.S.: Samozřejmě existuje lineární algoritmus
udělal bych to ještě jinak, hodil bych pole do binárního vyhledávacího stromu (časová náročnost O(N)), [...]Tohle určitě v lineárním čase stihnout nejde, na vytvoření vyhledávacího stromu je potřeba čas alespoň Ω(N log N). Ale tady je vyhledávací strom overkill.
Sice moc nerozumím tomu, co říkáš, ale rozhodně už jsem inspirován.
Podívám se po tom.
Jako cvičení by to bylo určitě přínosné, ale jinak... já třeba vím jen to, že něco takového existuje, že je to lepší než binární halda (takže může urychlit spoustu algoritmů, třeba Dijkstru), ale to je asi tak všechno.
Myslím, že pro začátek freshmousovi postačí prachobyčejná halda binární.
pomocou toho pdf to imho naprogramuje aj začiatočník
) a probíral i vyhledání K-tého nejmenšího prvku (to je principiálně úplně stejná uloha jako hledání K-tého největšího prvku, akorát při ní máš haldu "obráceně"
).
A že je ten čas vánoční, tak udělám dobrý skutek a najdu tu přednášku za tebe. Tady to je, přeju příjemnou zábavu.
Hmm, díky. Fakt vás ma tom Matfyzu asi něco učí!No jak jsem si tak přečetl MJův příspěvek výše, tak nevím nevím.
O(N) algoritmus, který se učí snad všude.Hmm, tak já o tom snad ani neslyšel. Naše algoritmizace začala slovy "otevřete si Netbeans"... No, to trošku přeháním, ale je fakt, že jsme se hned učili spíš Javu než algoritmizovat.
Pak jsou modifikace třídících algoritmů (např qsort -> zahodit půlku, kde ten prvek určitě není).Mrknu na to.
algorithm finding nth smallest number, vypadne z něj tohle.
O(nlog k)
using namespace std;
partial_sort(
size_coll.begin(),
size_coll.begin() + GREATEST_K_ELEMENT,
size_coll.end(),
greater<size_type>()
);
cout << size_coll.at(GREATEST_K_ELEMENT - 1) << endl;
Funkcni prog. je na pastebin.com.
for () {}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.