Portál AbcLinuxu, 2. května 2025 17:25
Tento zápisek byl redakcí smazán.
Tiskni
Sdílej:
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.
pomocou toho pdf to imho naprogramuje aj začiatočník
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 () {}
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.