Třídění v C ++ - Důležité třídění použité pro implementaci.

Obsah:

Anonim

Úvod do třídění v C ++

S řadou prvků k objednání pomáhá třídění při uspořádání prvků v záznamu na základě vztahu objednávky. Zvažte záznam souboru, který obsahuje spoustu informací, pro přístup k seznamu ze záznamu je nutné mít klíčové pole pro nasměrování aktuálního umístění prvku. Například zvažte seznam jmen v databázi, mohl by být seřazen podle abecedy. Třídění sehrálo důležitou roli v oblasti počítačů a technologií. Uvidíme více v tomto článku.

Co je třídění v C ++?

Třídění je základní koncept používaný programátorem nebo výzkumným pracovníkem k třídění požadovaných vstupů. Pořadí složitosti je dáno 0 (N * log (N)). Třídění vstupu usnadňuje řešení mnoha problémů, jako je vyhledávání, maximum a minimum. Přestože třídění uspořádá data v pořadí, účinnost procesu je velmi důležitá, která je založena na dvou kritériích: - Čas a paměť potřebná k provedení třídění na daných datech. Čas se měří počítáním srovnání použitých kláves. K dispozici je mnoho algoritmů. Obecně se třídění v C ++ dělí na dva typy:

  1. Vnitřní třídění
  2. Externí třídění

Syntaxe a příklad

Syntax:

C ++ používá vestavěné funkce sort () pro své algoritmy pro třídění kontejnerů, jako jsou vektory, pole.

Seřadit (pole, pole + velikost);

Příklady:

#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)
#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)
#include
using namespace std;
int main ()
(
int ins(12) = ( 19, 13, 5, 27, 1, 26, 31, 16, 2, 9, 11, 21);
cout<<"\nInput list is \n";
for(int i=0;i<12;i++)
(
cout < )
for(int k=1; k<12; k++)
(
int t = ins(k);
int j= k-1;
while(j>=0 && t <= ins(j))
(
ins(j+1) = ins(j);
j = j-1;
)
ins(j+1) = t;
)
cout<<"\nSorted list is \n";
for(int i=0;i<12;i++)
(
cout < )
)

Výstup:

Jak to funguje?

Nejprve si zvolíme Rychlé třídění, které je považováno za důležitou metodu mezi různými typy třídění. Základní třídění matice vyžaduje přístup Quicksort. Existují různé způsoby implementace třídění, účel každé z těchto technik je stejný jako porovnání dvou prvků a jejich výměna s dočasnou proměnnou. V tomto článku si probereme nejdůležitější třídění použité při implementaci. Následující jsou:

  1. Řazení bublin
  2. Třídění vložení
  3. Rychlé řazení
  4. Výběr Třídit

Existují sloučení třídění, radix řazení, třídění pásek, o kterém se můžeme bavit později. Nejprve půjdeme s Bubble sort.

1. Řazení bublin

Bubble sort je jedna z nejjednodušších metod třídění, kterou můžeme použít pro aplikace. V této technice jsou postupné swapy vytvářeny prostřednictvím záznamů, které mají být tříděny. V každém kroku porovnává klíč s daty a vyměňuje prvky, pokud nejsou v požadovaném pořadí. Třídění se provádí se sousedními prvky v době, kdy je po výměně umístěn na tříděné místo pouze jeden prvek.

Příklad: Uvažujme netříděné pole A () = (6, 2, 4, 7, 1)

62471
A (0)A (1)A (2)A (3)A (4)

Krok 1: Pokud porovnáme A (0)> A (1), pokud je podmínka true, vyměňte prvek (6> 2) za true, vložte 2 do A (0). Podobně jsou všechny kroky stejné, dokud se pole neztratí.

Nyní je pole A () = (2, 6, 4, 7, 1)

Krok 2: 6 je porovnán se 4. Protože 6 je větší než 4. Proto jsou 6 a 4 zaměněny.

Nyní je pole A () = (2, 4, 6, 7, 1)

Krok 3: Prvek 6 je porovnán se 7. Protože 6 <2 a prvky jsou ve vzestupném pořadí, prvky nejsou zaměněny.

Tříděné pole je A () = (2, 4, 6, 7, 1).

Pokračujte v procesu, dokud nebude pole seřazeno.

2. Vložení řazení

V této technice začneme druhým datovým prvkem za předpokladu, že první prvek je již roztříděn a porovnání je provedeno s druhým prvkem a krok pokračuje s dalším následujícím prvkem. V poli N elementů je nutné mít N-1 průchody, aby měl tříděný element.

Zvažte pole A () = (8, 3, 6, 1)

8361

Krok 1: První prvek hledá největší prvek v poli, který se má zaměnit. Pokud je větší, zůstane stejný a přejde k druhému prvku, zde 8 je větší než všechny, nedojde k žádnému swapu.

8361

Krok 2: Výměna s druhým prvkem

3861

Krok 3: Zaměňování s třetím prvkem

3681

Krok 4: Výměna se čtvrtým prvkem

1368

3. Rychlé řazení

Tato technika sleduje algoritmus dělení a dobývání a je považována za velmi efektivní a rychlejší pro obrovské pole. Jsou rozděleny do tří podsekcí: vlevo, vpravo a uprostřed. Prostřední prvek má jednu hodnotu a je pojmenován jako pivot. Mechanismus vypadá takto, prvek v levém segmentu by neměl mít klíč větší než prostřední prvek a žádný prvek vpravo nemá klíč, který je menší než klíč středního prvku. Nyní začneme s ukázkou procesu třídění. Quicksort používá při třídění dílčích částí rekurzivní koncept. Pole je rozděleno do podčásti, opět levý a pravý segment jsou rozděleny dobýváním. Zde v tomto příkladu má vzhledem k tomu, že poslední prvek má pivot a první prvek je považován za nízký. Zvažte prvek pole

492211165630

Převzetí prvku zcela vpravo má otočný prvek = 30

162211305649

Prvek větší než otočný čep je umístěn směrem doleva, menší vpravo.

1622115649

Ukazatel je umístěn na čepu a je rozdělen kolem čepu.

1122165649

Dílce jsou tříděny jednotlivě.

111622304956

Nakonec jsme dostali Sorted Array.

4. Výběr řazení

Tato technika se také nazývá výměnné třídění provádí duální operace vyhledávání a třídění. Implementace vyžaduje přímé třídění podle definice níže. Zde je třeba identifikovat nejmenší prvek přítomný v poli a tento prvek je tříděn v první i-té poloze. Dále je identifikován druhý nejmenší prvek a je tříděn v druhé poloze. Když se netříděný podčást vyprázdní, výběrový režim opustí smyčku. Časová složitost je dána jako O (n 2 ).

Zvažte následující pole:

6326132312

1. Najděte nejmenší prvek a umístěte jej na začátek a zaměňte se s pozicí.

1226132363

2. Druhý prvek a (1) je identifikován ve srovnání s minimálním prvkem a umístí jej do druhé polohy, podobně pokračuje průchod.

1213262364

Konečný tříděný výstup

1213232664

Závěr

Závěrem se tento článek zaměřil na koncepty třídění a jejich pracovní mechanismus. Všechny tyto techniky třídění používají koncepty paralelního zpracování. Třídění tvoří základní stavební blok ve strukturujících algoritmech k řešení problémů s daty v reálném světě tříděním sady hodnot podle požadavků.

Doporučené články

Toto je průvodce tříděním v C ++. Zde diskutujeme o úvodu a syntaxi s příklady spolu s tím, jak to funguje. Další informace naleznete také v dalších navrhovaných článcích -

  1. Třídění v Tableau
  2. Iterátor v C ++
  3. Funkce pole v C
  4. Haldy Seřadit v C.
  5. Jak se třídění provádí v PHP?
  6. Haldy Seřadit v Pythonu
  7. Iterátor v Javě
  8. Prvních 11 funkcí a výhod C ++
  9. Iterátor v Pythonu | Výhody a příklady Pythonu