C ++ algoritmus - Példák a C ++ algoritmusra, részletes magyarázattal

Tartalomjegyzék:

Anonim

Bevezetés a C ++ algoritmusba

A sorrendben elrendezett véges lépések, amelyek útmutatóként szolgálnak minden probléma megoldásához. Ezt a c ++ algoritmusszót különösen a számítástechnikában használják az összetett problémák megoldására szolgáló eljárás meghatározására. A megoldás architektúrája különböző algoritmusokonként eltérő lehet. A leghatékonyabb algoritmus az, amely kevesebb idő alatt nyújt megoldást, és kevesebb memóriát fogyaszt, összehasonlítva más algoritmikus megoldásokkal. A C ++ fejléc a számtartományok működésére tervezett funkciókat tartalmazza. Ezek a funkciók a számon működnek, de nem végeznek manipulációt az adatokkal. Csak úgy működik, hogy ismétlődik, vagy mutat a számokra, anélkül, hogy megérintené az adatait.

Néhány fejléc alatti függvény a következő:

  • algoritmus :: szomszédos_megoldás (): Két azonos egymást követő szám első előfordulását jelzi.
  • algoritmus :: all_of (): Igaz, ha a számok az első és az utolsó tartomány alá esnek.
  • algoritmus :: binary_search (): Ellenőrzi, hogy a „keresendő érték” jelen van-e a rendezett sorrendben.
  • algoritmus :: copy (): Ez a funkció elősegíti az elemek sorozatának másolását az egyik helyről az új helyre.
  • algoritmus :: count_if (): Ez a függvény az egyes elemek előfordulásának számát adja vissza, ha az „ha feltétel” -ben említett feltétel teljesül.
  • algoritmus :: egyenlő (): Ez a függvény teszteli, hogy két elemcsoport azonos-e vagy sem. Nagyon sok hasonló funkció van előre definiálva a C ++-ban, amelyeket a kódolók beperelhetnek üzleti tevékenységük előnyei érdekében.

A C ++ algoritmus magyarázata

A C ++ ezen algoritmusok verzióit nyújtja a névtér std :: tartományokban. Az algoritmusok az a hatalmas téma, amely a kereséstől, a rendezéstől a min / max halomig terjedő témákra terjed ki. Ezeket az alábbiak szerint lehet besorolni:

1. Halom: Ilyen típusokban halomot építünk fel, hogy megtudjuk a szekvencia maximális vagy minimális értékét. Ez a fák adatszerkezetét használja a kimenet eléréséhez.

2. Bináris keresés: Ez a C ++ algoritmus a teljes szekvenciát iteratíven osztja két részre, amíg meg nem találja a tényleges értéket, amelyet a célzott szekvencia alapján keresünk. Nagyon hatékony algoritmus, mivel felére csökkenti az időt. Ennek a C ++ algoritmusnak az alkalmazásának előfeltétele, hogy az neki biztosított szekvenciát bármilyen sorrendben kell rendezni.

3. Rendezés: Különböző típusú rendezés létezik, amely felhasználható a rendezett sorozat előállítására. Ezek beszúrási, buborékos, válogatási, halom-, gyors-, egyesítési és rendezési. Ezen algoritmusok némelyike ​​a „megosztás és szabályzás” elvén működik, mint például az egyesítés és a gyors rendezés. Ezek gyorsak és hatékonyak, mint mások, bár több memóriát használnak a műveletek során.

4. Egyszerű műveletek a szekvencia alatt: Az algoritmusok egyszerű műveletek végrehajtására használhatók, például a számok cseréjére, eltávolítására és visszafordítására egy sorozatban. Sokféle módon érheti el ezt a kimenetet különböző algoritmusok felhasználásával, amelyek mindegyikének célja ugyanaz a kimenet.

5. Nem módosító műveletek: Egyes műveletek, például a keresés, a keresés, a számlálás az elemek számát a sorozatban. Ezek a műveletek nem módosítják az elem adatértékeit, hanem ezen elemek körül működnek.

Példa az algoritmusok lépéseivel

Íme néhány példa a C ++ algoritmusra, az alábbiakban bemutatott lépésekkel:

1. példa

Írj egy C ++ algoritmust két szám hozzáadásához szükséges program írásához.

Algoritmus

A lépések az alábbiakban találhatók:

  1. Rajt
  2. Fogadja el a 1. és 2. számot
  3. Összeg = num1 + num2
  4. Kijelző összeg
  5. Állj meg

2. példa

Írj egy C ++ algoritmust annak megállapításához, hogy a hallgató sikeres-e vagy sem, az osztályzatok alapján. A fokozat az összes tantárgy összesített pontszámának átlaga.

Algoritmus

A lépések az alábbiakban találhatók:

  1. Rajt
  2. Bemeneti jelölések1, Marks2, Marks3, Marks4
  3. Fokozat = (Marks1 + Marks2 + Marks3 + Marks4) / 4
  4. Ha (fokozat <50), akkor
  5. Nyomtatás “Fail”
  6. Más
  7. Nyomtatás “Pass”
  8. Vége, ha
  9. Állj meg

3. példa

Buborék rendezése - Ez a C ++ algoritmus a számsorrend növekvő vagy csökkenő sorrendbe rendezésére. Összehasonlítja a legközelebbi két számot, és növekvő sorrendben a kicsit egy nagyobb szám elé helyezi. Ez a folyamat addig folytatódik, amíg el nem érjük a sorozatot, ahol megtaláljuk az összes számot egymás után rendezve.

Ennek az algoritmusnak az idő bonyolultsága O (n), mivel a vezérlőknek át kell menniük a sorban lévő elemek összes számát, majd ellenőrizniük kell, hogy 2 szomszédos szám van-e rendezve. Ha nem, akkor szétválogat, és a sorozat másik két szomszédos párjára lép.

A fenti C ++ algoritmus megvalósítása

Itt található a példa a C ++ algoritmusra, a kód implementációjával:

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;
)

Kimenet:

Következtetés

A C ++ algoritmus egy részletes, lépésről lépésre átfogó megoldási útmutató, amelynek célja a figyelem összpontosítása, hogy a felmerülő problémákra a leghatékonyabb és kevésbé időigényes megoldást biztosítsa. Számos eszköz létezik az algoritmusok hatékonyságának ellenőrzésére, például a nagy Oh jelölések, az Omega vagy a Gama jelölések, amelyek hasznosak az algoritmusok hatékonyságának megtalálásához. Minden algoritmusnak megvannak a maga kiváltságai és előnyei, és a problémamegfogalmazásnak megfelelően kiválasztjuk a megfelelő illesztési megoldást. Ez döntő szerepet játszik a probléma megoldásának megtervezésében, mivel ez a végtermék teljesítményének alapjául szolgál.

Ajánlott cikkek

Ez egy útmutató a C ++ algoritmushoz. Itt tárgyaljuk a C ++ algoritmus bevezetését és részletes magyarázatát, a különféle példákkal és a kód megvalósításával együtt. A következő cikkeket is megnézheti további információkért -

  1. 3D tömbök C ++ formátumban
  2. Rozsda vs C ++
  3. C ++ absztrakt osztály
  4. Túlterhelés és felülbírálás a C ++-ban
  5. Absztrakt osztály deklarálása a C # példában