Jak implementovat funkci řazení v C ++?



Tento článek vám pomůže prozkoumat funkci řazení v jazyce C ++ a během procesu vám poskytne podrobnou ukázku konceptu

Třídění je jednou z nejzákladnějších a nejužitečnějších funkcí aplikovaných na data. Zaměřuje se na uspořádání dat konkrétním způsobem, který se může podle požadavků zvyšovat nebo snižovat. V C ++ STL je zabudovaná funkce s názvem ‚sort () ', která nám umožňuje snadno provádět třídicí algoritmus. V tomto článku budeme zkoumat funkci řazení v C ++,

V tomto článku se budeme zabývat následujícími ukazateli:





Pokračujeme tímto článkem o funkci řazení v C ++

Třídit ( ) funkce

Jedná se o vestavěnou funkci souboru záhlaví algoritmu, který se používá k třídění kontejnerů jako pole, vektory v určeném pořadí. Interně je tato funkce implementována jako Quick-sort
Quicksort je algoritmus rozdělení a dobývání. Quicksort nejprve rozdělí velký seznam prvků na dva menší dílčí seznamy: nižší prvky a vyšší prvky. Quicksort pak rekurzivně setřídí dílčí seznamy.



Kroky jsou následující:
1. Vyberte ze seznamu náhodný prvek (obvykle poslední prvek), který se nazývá pivot.
2. Uspořádejte seznam takovým způsobem, aby všechny prvky s hodnotami menšími než pivot přicházely před pivot, zatímco všechny prvky s hodnotami většími než pivot přicházejí za ním a stejné hodnoty mohou jít oběma směry, tento proces se nazývá operace oddílu.
3. Rekurzivně seřaďte podřízený seznam menších prvků a podřízený seznam větších prvků, znovu vyberte kontingenční podřízený seznam a rozdělte je.
Základním případem rekurze jsou seznamy velikosti nula nebo jedna, které nikdy nemusí být tříděny, a tak jejich kombinací třídíme náš seznam.

pole objektů java

Quicksort je v praxi rychlejší než jiné O (n log n) algoritmy, jako je Insertion Sort nebo Bubble sort. Quicksort lze implementovat pomocí algoritmu dělení na místě, což znamená, že celé řazení lze provést pouze s dalším O (log n) dalším prostorem. Quicksort není stabilní druh.
Jeho složitost je následující:
Nejlepší případ - O (n log n)
Nejhorší případ - O (n ^ 2)
Průměrný případ - O (n log n)

Syntax:
třídit (první, poslední)
Tady,
first - je index (ukazatel) prvního prvku v rozsahu, který má být seřazen.
last - je index (ukazatel) posledního prvku v rozsahu, který má být seřazen.
Například chceme seřadit prvky pole „arr“ od 1 do 10 pozice, použijeme sort (arr, arr + 10) a seřadí 10 prvků ve vzestupném pořadí.
Návratová hodnota
Žádný



Složitost

Průměr složitosti třídění je N * log2 (N), kde N = poslední - první.

Rozsah dat
Objekt v rozsahu [první, poslední) se upraví.

Výjimky
Přetížení s parametrem šablony, který je pojmenován jako chyby sestavy ExecutionPolicy, následovně:
Pokud se algoritmu nepodaří přidělit paměť, std :: bad_alloc je vyvolána jako výjimka.
Pokud provedení funkce vyvolané jako součást algoritmu vyvolá výjimku std :: terminate.

Pokračujeme tímto článkem o funkci řazení v C ++

Příklad - řazení dat ve vzestupném pořadí:

#include using namespace std int main () {int array [] = {10, 35, 85, 93, 62, 77, 345, 43, 2, 10} int n = sizeof (array) / sizeof (array [0] ) // 'sizeof' udává velikost celkového pole, tj. velikost každého znaku * č. znaků // takže získat ne. znaků // rozdělíme sizeof (pole) na velikost libovolného jednoho znaku pole // zde je to pole [0] sort (pole, pole + n) cout<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Výstup :

Funkce výstupu - třídění v C ++ - Edureka

Vysvětlení

Z výše uvedeného příkladu vidíme, že funkce sort () ve výchozím nastavení třídí pole ve vzestupném pořadí.

co dělá správce linuxu

Pokračujeme tímto článkem o funkci řazení v C ++

Příklad - řazení dat v sestupném pořadí:

Chcete-li třídit data pole v sestupném pořadí, musíme zavést třetí parametr, který se používá k určení pořadí, ve kterém mají být prvky seřazeny. K třídění dat v sestupném pořadí můžeme použít funkci „greater ()“.

#include using namespace std int main () {int array [] = {41, 53, 4, 459, 60, 7, 23, 4, 232, 10} int n = sizeof (array) / sizeof (array [0] ) sort (pole, pole + n, větší ()) cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Výstup:

Exp l národ
Zde funkce sort () provede srovnání způsobem, který předloží větší prvek.

Pokračujeme tímto článkem o funkci řazení v C ++

Částečný_tříd

C ++ STL nám poskytuje funkci částečného třídění, funkce je podobná funkci sort (), ale na rozdíl od funkce sort () se nepoužívá k třídění celého rozsahu, spíše se používá k třídění pouze její části. Seřadí prvky v rozsahu [první, poslední) takovým způsobem, že prvky před prostředním prvkem jsou seřazeny ve vzestupném pořadí, zatímco prvky za středem jsou ponechány tak, jak jsou.

Může být použit k nalezení největšího prvku, pokud použijeme funkční objekt k seřazení na první pozici

Příklad

#include #include #include using namespace std int main () {vector vec = {10, 45, 60, 78, 23, 21, 30} vector :: iterator iptr partial_sort (vec.begin (), vec.begin () + 1, vec.end (), greater ()) iptr = vec.begin () cout<< 'The largest element is = ' << *iptr return 0 } 

Výstup:

Vysvětlení:
Výše uvedený kód lze použít k nalezení největšího čísla v řadě, k nalezení nejmenšího čísla v řadě stačí odstranit větší příkaz.

Tak jsme se dostali na konec tohoto článku týkajícího se funkce řazení v C ++. Pokud se chcete dozvědět více, podívejte se na Java Training by Edureka, důvěryhodná online vzdělávací společnost. Edureka Kurz je navržen tak, aby vás naučil jak základní, tak pokročilé koncepty Java spolu s různými rámci Java, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.