Articles

Co je třídění?


Nejlepší odpověď

V počítačové vědě je třídicí algoritmus je algoritmus, který uvádí prvky seznamu v určitém pořadí. Nejčastěji používané objednávky jsou číselné pořadí a lexikografické pořadí. Efektivní řazení je důležité pro optimalizaci efektivity dalších algoritmů (jako jsou vyhledávací a slučovací algoritmy), které vyžadují, aby byla vstupní data v seřazených seznamech. Řazení je také často užitečné pro kanonizaci dat a pro produkci čitelného výstupu. Formálně musí výstup libovolného třídicího algoritmu splňovat dvě podmínky:

  • Výstup je v neklesajícím pořadí (každý prvek není menší než předchozí prvek podle požadovaného celkového pořadí);
  • Výstupem je permutace (přeskupení, při zachování všech původních prvků) vstupu.

Dále jsou vstupní data často uložena v poli, které umožňuje náhodný přístup, spíše než seznam, který umožňuje pouze sekvenční přístup; ačkoli lze na vhodný typ dat po vhodné úpravě použít mnoho algoritmů.

Algoritmy řazení se často označují jako slovo následované slovem „sort“ a gramaticky se v angličtině používají jako fráze podstatného jména, příklad ve větě: „je neefektivní používat třídění vkládání na velkých seznamech,“ fráze třídění vkládání odkazuje na algoritmus třídění vkládání.

Odpověď

Třídění miliardy objektů je rozhodně na dosah, pokud si je můžete uchovat v paměti. Potřebujete srovnávat O (n log n), že? Pokud nemůžete „seřadit, co se vejde do paměti vašeho počítače (nebo počítačů, pokud máte distribuovaný systém), a sloučit výsledky. V jednom okamžiku v 90. letech měl upravený druh sloučení světový rychlostní rekord a super lineárně na rychlost CPU.

Něco jiného však děláte, když se N zvětší (nebo vlastně vždy, když se něco zpomalí kvůli rozumným vstupům), blíže se podíváte na to, co opravdu potřebujete.

Proč musíte třídit objekty? Pokud hledáte pouze duplikáty, existují mnohem rychlejší způsoby! Pokud chcete zpracovat spodních (nebo horních) 5\%, existují algoritmy O (n), které lze rozdělit na základě příspěvku Seřadit pozici!

Když se věci zpomalí, podíváte se, co se děje, a než přijdete na to, zda se jedná o nejrychlejší algoritmus, udělejte cokoli, zjistíte, zda je to skutečně správná věc (Výjimka: je-li rychlejší „cokoli“ již odladěnou tenkou jednotkou, do které můžete vložit facku, může to být lepší udělat… jako kdybyste zjistili, že jste Testování, zda pole mnohokrát obsahuje nějaký prvek, může být jednodušší nahradit pole sadou a zjistit, zda je nyní dostatečně rychlé, aby vás nezajímalo, že kdybyste provedli dalších šest hodin výzkumu, mohli byste vyloučit polovinu šeky atd.)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *