Úvod do algoritmu C ++
Konečná skupina krokov usporiadaných postupne, ktorá slúži ako vodítko na vyriešenie akéhokoľvek problému. Toto slovo algoritmu c ++ sa používa najmä v informatike na definovanie postupu riešenia zložitých problémov. Architektúra riešenia sa môže líšiť pre rôzne algoritmy. Najúčinnejším algoritmom je ten, ktorý poskytuje riešenie v kratšom čase a spotrebuje menej pamäte v porovnaní s inými algoritmickými riešeniami. V záhlaví C ++ sú funkcie určené na prácu v číselných rozsahoch. Tieto funkcie pracujú na čísle, ale nevykonávajú s údajmi žiadne manipulácie. Funguje to iba pri iterácii alebo ukazovaní na čísla bez toho, aby sa dotkli jeho údajov.
Niektoré funkcie členov pod hlavičkou sú:
- Algoritmus :: Neighbor_find (): Ukazuje prvý výskyt dvoch identických po sebe idúcich čísel.
- algoritmus :: all_of (): Vráti true, ak čísla ležia v rozsahu prvého a posledného prvku.
- Algoritmus :: binary_search (): Kontroluje, či je „hodnota, ktorá sa má prehľadávať“, prítomná v zoradenej sekvencii alebo nie.
- algoritmus :: copy (): Táto funkcia pomáha pri kopírovaní rozsahu prvkov z jedného miesta do nového umiestnenia.
- algoritmus :: count_if (): Táto funkcia vracia počet výskytov konkrétnych prvkov, ak je splnená podmienka uvedená v časti „if condition“.
- algoritmus :: rovná (): Táto funkcia testuje, či sú dve sady prvkov rovnaké alebo nie. V C ++ je preddefinovaných veľa podobných funkcií, ktoré môžu kodéri žalovať v prospech svojho podnikania.
Vysvetlenie algoritmu C ++
C ++ poskytuje verzie týchto algoritmov v oblasti názvov std :: range. Algoritmy sú rozsiahlou témou, ktorá pokrýva témy od vyhľadávania, triedenia po hromady min / max. Možno ich rozdeliť na:
1. Halda: V takýchto typoch zostavíme haldu, aby sme zistili maximálnu alebo minimálnu hodnotu sekvencie. Na dosiahnutie tohto výstupu sa použila dátová štruktúra stromov.
2. Binárne vyhľadávanie: Tento algoritmus C ++ iteratívne rozdeľuje celú sekvenciu na dve časti, až kým nenájde skutočnú hodnotu, ktorú hľadáme z cieľovej sekvencie. Je to vysoko efektívny algoritmus, pretože skracuje čas o polovicu. Predbežnou podmienkou použitia tohto algoritmu C ++ je to, že sekvencia, ktorá sa mu poskytuje, by mala byť usporiadaná v akomkoľvek poradí.
3. Triedenie: Existujú rôzne typy triedenia, ktoré môžu byť použité na vygenerovanie zoradenej sekvencie. Sú to triedenie vloženia, triedenie bubliniek, triedenie výberu, triedenie haldy, rýchle zoradenie, zlúčenie triedenia. Niektoré z týchto algoritmov fungujú na princípe „delenia a pravidla“, ako je zlúčenie a rýchle zoradenie. Sú rýchle a efektívne v porovnaní s ostatnými, aj keď pri svojich operáciách využívajú viac pamäte.
4. Jednoduché operácie počas sledu: Algoritmy sa môžu použiť na vykonávanie jednoduchých operácií, ako je nahradenie, odstránenie, obrátenie čísel v postupnosti. Existuje mnoho spôsobov, ako dosiahnuť tento výstup pomocou rôznych algoritmov, ktorých cieľom je dosiahnuť rovnaký výstup.
5. Nemodifikujúce operácie: Niektoré operácie ako vyhľadávanie, nájdenie, spočítanie počtu prvkov v postupnosti. Tieto operácie nemodifikujú dátové hodnoty prvku, ale fungujú okolo týchto prvkov.
Príklad algoritmov s krokmi
Tu je niekoľko príkladov algoritmu C ++ s krokmi vysvetlenými nižšie:
Príklad č. 1
Napíš algoritmus C ++, aby si napísal program na pridanie dvoch čísiel.
algoritmus
Kroky sú uvedené nižšie:
- štart
- Prijmite číslo 1, číslo 2
- Súčet = num1 + num2
- Zobrazená suma
- Stop
Príklad č. 2
Napíš algoritmus C ++, aby si určil, či študent na základe známok vyhovuje alebo nevyhovuje. Známky sú priemerom z celkového počtu bodov získaných vo všetkých predmetoch.
algoritmus
Kroky sú uvedené nižšie:
- štart
- Vstupné značky1, Značky2, Značky3, Značky4
- Známka = (Známky 1 + Známky 2 + Známky 3 + Známky4) / 4
- Ak (stupeň <50), potom
- Vytlačiť „Neúspešné“
- inak
- Tlač „Pass“
- Koniec Ak
- Stop
Príklad č. 3
Bubble sort- Toto je algoritmus C ++ na zoradenie číselnej sekvencie vo vzostupnom alebo zostupnom poradí. Porovnáva najbližšie dve čísla a pri triedení vo vzostupnom poradí umiestni malé číslo pred väčšie číslo. Tento proces pokračuje, kým nedosiahneme postupnosť, v ktorej nájdeme všetky čísla zoradené v poradí.
Časová zložitosť tohto algoritmu je O (n), pretože ovládacie prvky musia prechádzať celým počtom prvkov, ktoré sú v sekvencii, a potom skontrolovať, či sú usporiadané 2 susedné čísla. Ak nie, potom triedi a presúva sa k ďalším dvom susedným párom v sérii.
Implementácia vyššie uvedeného algoritmu C ++
Tu je príklad algoritmu C ++ s implementáciou 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ýkon:
záver
Algoritmus C ++ je podrobný sprievodca generickým riešením krok za krokom, ktorý je navrhnutý tak, aby bol zameraný tak, aby poskytoval najúčinnejšie a menej časovo náročné riešenie každého poskytnutého problému. Existuje veľa nástrojov na kontrolu účinnosti algoritmov, ako sú veľké notácie Oh, notácie Omega alebo Gama, čo je užitočné na zistenie účinnosti algoritmov. Každý algoritmus má svoje privilégiá a výhody a podľa vyhlásenia problému vyberieme správne riešenie. Toto hrá kľúčovú úlohu, keď navrhujeme riešenie problému, pretože sa stáva základom výkonnosti konečného produktu.
Odporúčané články
Toto je príručka k algoritmu C ++. Tu diskutujeme predstavenie a podrobné vysvetlenie algoritmu C ++ spolu s rôznymi príkladmi a implementáciou kódu. Ďalšie informácie nájdete aj v nasledujúcich článkoch -
- 3D polia v C ++
- Rust vs C ++
- Abstraktná trieda v C ++
- Preťaženie a prekonanie v C ++
- Deklarovanie abstraktnej triedy v C # s príkladom