Algoritmus C ++ - Příklady algoritmu C ++ s podrobným vysvětlením

Obsah:

Anonim

Úvod do algoritmu C ++

Konečná sada kroků uspořádaných postupně, která slouží jako vodítko k vyřešení jakéhokoli problému. Toto slovo algoritmu c ++ se používá zejména v informatice k definování postupu řešení složitých problémů. Architektura řešení se může u různých algoritmů lišit. Nejúčinnějším algoritmem je ten, který poskytuje řešení v kratším čase a spotřebuje méně paměti ve srovnání s jinými algoritmickými řešeními. V záhlaví C ++ jsou funkce navržené pro práci s číselnými rozsahy. Tyto funkce pracují s číslem, ale neprovádějí žádné manipulace s daty. Funguje to pouze při iteraci nebo směřování k číslům, aniž by se dotkla jeho dat.

Některé členské funkce pod hlavičkou jsou:

  • Algoritmus :: Neighbor_find (): Ukazuje první výskyt dvou identických po sobě jdoucích čísel.
  • algoritmus :: all_of (): Vrací true, pokud čísla leží v rozsahu prvního a posledního prvku.
  • Algoritmus :: binary_search (): Zkontroluje, zda je „prohledávaná hodnota“ přítomna v seřazené posloupnosti nebo ne.
  • algoritmus :: copy (): Tato funkce pomáhá při kopírování řady prvků z jednoho umístění do nového umístění.
  • algoritmus :: count_if (): Tato funkce vrací počet výskytů konkrétních prvků, pokud je splněna podmínka uvedená v „pokud je podmínka“.
  • algoritmus :: rovná (): Tato funkce testuje, zda jsou dvě sady prvků stejné nebo ne. V C ++ je předdefinováno mnoho podobných funkcí, které mohou být kodéry žalovány ve prospěch jejich podnikání.

Vysvětlení algoritmu C ++

C ++ poskytuje verze těchto algoritmů v oboru názvů std :: range. Algoritmy jsou obrovské téma, které pokrývá témata od vyhledávání, třídění po hromady min / max. Lze je kategorizovat jako:

1. Hromada: V takových typech konstruujeme haldu, abychom zjistili maximální nebo minimální hodnotu sekvence. Tím bylo dosaženo datové struktury stromů.

2. Binární vyhledávání: Tento algoritmus C ++ iterativně rozdělí celou sekvenci na dvě části, dokud nenajde skutečnou hodnotu, kterou hledáme z cílové sekvence. Jedná se o vysoce účinný algoritmus, protože zkracuje čas o polovinu. Předběžnou podmínkou použití tohoto algoritmu C ++ je to, že posloupnost, která mu byla poskytnuta, by měla být seřazena v jakémkoli pořadí.

3. Třídění: Existují různé typy třídění, které lze použít k vygenerování tříděné sekvence. Jsou to řazení, třídění bublin, výběrové řazení, haldy, rychlé řazení, sloučení. Některé z těchto algoritmů fungují na principu „dělení a pravidla“, jako je sloučení a rychlé řazení. Jsou ve srovnání s ostatními rychlé a efektivní, i když ve svých operacích využívají více paměti.

4. Jednoduché operace po sekvenci: Algoritmy lze použít k provádění jednoduchých operací, jako je nahrazení, odebrání, obrácení čísel v sekvenci. Existuje mnoho způsobů, jak tohoto výstupu dosáhnout pomocí různých algoritmů, jejichž cílem je dosažení stejného výstupu.

5. Nemodifikující operace: Některé operace, jako je vyhledávání, vyhledávání, spočítání počtu prvků v sekvenci. Tyto operace neupravují datové hodnoty prvku, ale fungují kolem těchto prvků.

Příklad algoritmů s kroky

Zde je několik příkladů algoritmu C ++ s kroky vysvětlenými níže:

Příklad č. 1

Napiš algoritmus C ++ pro napsání programu pro přidání dvou čísel.

Algoritmus

Kroky jsou uvedeny níže:

  1. Start
  2. Přijměte num1, num 2
  3. Sum = num1 + num2
  4. Součet zobrazení
  5. Stop

Příklad č. 2

Napište algoritmus C ++ a určete, zda student na základě známek vyhovuje nebo nevyhovuje. Hodnocení je průměr celkových známek získaných u všech předmětů.

Algoritmus

Kroky jsou uvedeny níže:

  1. Start
  2. Vstupní značky1, Marks2, Marks3, Marks4
  3. Stupeň = (Marks1 + Marks2 + Marks3 + Marks4) / 4
  4. Pokud (stupeň <50), pak
  5. Tisknout „Fail“
  6. Jiný
  7. Tiskněte „Pass“
  8. Konec pokud
  9. Stop

Příklad č. 3

Bubble sort- Jedná se o algoritmus C ++ pro seřazení posloupnosti čísel ve vzestupném nebo sestupném pořadí. Porovná nejbližší dvě čísla a umístí malé číslo před větší číslo, pokud je seřadí vzestupně. Tento proces pokračuje, dokud nedosáhneme sekvence, kde najdeme všechna čísla seřazená v pořadí.

Časová složitost tohoto algoritmu je O (n), protože ovládací prvky musí procházet celým počtem prvků, které jsou v sekvenci, a poté zkontrolovat, zda jsou tříděna 2 sousední čísla. Pokud tomu tak není, třídí se a přesouvá k dalším dvěma sousedním párům v řadě.

Implementace výše uvedeného C ++ algoritmu

Níže je uveden příklad algoritmu C ++ s implementací kódu:

Kód:

#include
void swap(int *p1, int *p2)
(
int temp = *p1;
*p1 = *p2;
*p2 = temp;
)
// This is an optimised code for the bubble sort
void bSort(int arrnumbers(), int n)
(
int i, j;
bool check;
for (i = 0; i < n-1; i++)
(
check = false;
for (j = 0; j < ni-1; j++)
(
if (arrnumbers(j) > arrnumbers(j+1))
(
swap(&arrnumbers(j), &arrnumbers(j+1));
check = true;
)
)
// We are breaking from the loop in case two elements were not swapped by inner loop.
if (check == false)
break;
)
)
//This function is to print the array sequence as final output after sorting
void print(int arrnumbers(), int sizeofarray)
(
int i;
for (i=0; i < sizeofarray; i++)
printf("%d ", arrnumbers(i));
)
// This the main program from where the execution will start
int main()
(
int arrnumbers() = (5, 6, 1, 0, 2, 9);
int n = sizeof(arrnumbers)/sizeof(arrnumbers(0));
bSort(arrnumbers, n);
printf("Sorted array: \n");
print(arrnumbers, n);
return 0;
)

Výstup:

Závěr

Algoritmus C ++ je podrobný průvodce generickým řešením krok za krokem, který je navržen tak, aby byl zaměřen tak, aby poskytoval nejúčinnější a méně časově náročné řešení jakéhokoli poskytovaného problému. Existuje mnoho nástrojů pro kontrolu účinnosti algoritmů, jako jsou velké notace Oh, notace Omega nebo Gama, což je užitečné pro nalezení účinnosti algoritmů. Každý algoritmus má svá privilegia a výhody a my volíme správné řešení podle prohlášení o problému. To hraje klíčovou roli, když navrhujeme řešení problému, protože se stává základem výkonu finálního produktu.

Doporučené články

Toto je průvodce algoritmem C ++. Zde diskutujeme představení a podrobné vysvětlení algoritmu C ++ spolu s různými příklady a implementací kódu. Další informace naleznete také v následujících článcích -

  1. 3D pole v C ++
  2. Rust vs C ++
  3. Abstraktní třída v C ++
  4. Přetížení a přemostění v C ++
  5. Deklarace abstraktní třídy v C # s příkladem