Hogyan lehet megvalósítani a rendezés funkciót C ++ nyelven?



Ez a cikk segít a Rendezés funkció felfedezésében a c ++ nyelven, és közben részletes bemutatást ad a koncepcióról

Válogatás az adatokra alkalmazott egyik legalapvetőbb és leghasznosabb funkció. Célja az adatok meghatározott módon történő elrendezése, amely a követelményeknek megfelelően nőhet vagy csökkenhet. A C ++ STL-ben van egy beépített függvény a ‘sort ()’ néven, amely lehetővé teszi számunkra a rendezési algoritmus egyszerű végrehajtását. Ebben a cikkben a rendezési funkciót vizsgáljuk meg C ++ nyelven,

A cikk a következő mutatókkal foglalkozik:





Folytatás ezzel a cikkel: Rendezés funkció a C ++ nyelven

Fajta ( ) funkció

Ez egy algoritmus fejlécfájl beépített függvénye, amelyet a konténerek tömb, vektorok rendezésére használnak, meghatározott sorrendben. Belsőleg ez a funkció Quick-sort néven valósul meg
A Quicksort egy megosztó és meghódító algoritmus. A Quicksort először egy nagy elemlistát két kisebb allistára oszt: az alsó és a magasabb elemekre. Ezután a Quicksort rekurzívan rendezi az allistákat.



A lépések a következők:
1. Válasszon ki egy véletlenszerű elemet (általában az utolsó elemet), amelyet pivotnak hívnak a listából.
2. Rendezze át úgy a listát, hogy az összes elem, amelynek értéke kisebb, mint a forgás, eljusson a forgás elé, míg az összes elem, amelynek értéke nagyobb, mint a forgás, következzen utána, és az egyenlő értékek mindkét irányba menjenek, ezt a folyamatot partíciós műveletnek nevezzük.
3. Rekurzívan rendezze a kisebb elemek és a nagyobb elemek allistáját, válasszon ki ismét egy pivot az allistából, és ossza fel őket.
A rekurzió alapesete nulla vagy egy nagyságú lista, amelyet soha nem kell rendezni, és így ezek kombinálásával rendezzük a listánkat.

különbség a hashmap és a hashtable között

A Quicksort gyorsabb a gyakorlatban, mint más O (n log n) algoritmusok, mint például az Insertion Sort vagy a Bubble sort. A Quicksort megvalósítható egy helybeli particionáló algoritmussal, ami azt jelenti, hogy a teljes rendezés csak O (log n) további területtel végezhető el. A Quicksort nem stabil fajta.
Összetettsége a következő:
Legjobb eset - O (n log n)
Legrosszabb eset - O (n ^ 2)
Átlagos eset - O (n log n)

Szintaxis:
rendezés (első, utolsó)
Itt,
első - a rendezni kívánt tartomány első elemének indexe (mutatója).
utolsó - a rendezni kívánt tartomány utolsó elemének indexe (mutatója).
Például egy „arr” tömb elemeit 1-től 10-ig akarjuk rendezni, a sort (arr, arr + 10) -et fogjuk használni, és 10 elemet növekvő sorrendben rendez.
Visszatérési érték
Egyik sem



Bonyolultság

A rendezési komplexitás átlaga N * log2 (N), ahol N = utolsó - első.

Adattartomány
Az [első, utolsó] tartományban lévő objektum módosul.

Kivételek
A túlterhelések egy sablonparaméterrel, amelyet ExecutionPolicy jelentéshibának neveznek, az alábbiak szerint:
Ha az algoritmus nem osztja ki a memóriát, akkor az std :: bad_alloc kivételként dobásra kerül.
Ha az algoritmus részeként meghívott függvény végrehajtása kivételt dob: std :: terminate.

Folytatás ezzel a cikkel: Rendezés funkció a C ++ nyelven

Példa - Az adatok növekvő sorrendbe rendezése:

#include névtér használatával std int main () {int tömb [] = {10, 35, 85, 93, 62, 77, 345, 43, 2, 10} int n = size (tömb) / sizeof (tömb [0] ) // A 'sizeof' megadja a teljes tömb méretét, azaz az egyes karakterek méretét * nem. karakterek // így nem. karakterek // elosztjuk a (tömb) méretét a tömb bármelyik karakterének méretével // itt ez a tömb [0] sort (tömb, tömb + n) cout<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Kimenet :

Kimenet - Rendezés funkció C ++ nyelven - Edureka

Magyarázat

A fenti példából láthatjuk, hogy a sort () függvény alapértelmezés szerint növekvő sorrendbe rendezi a tömböt.

különbség git és github között

Folytatás ezzel a cikkel: Rendezés funkció a C ++ nyelven

Példa - Az adatok csökkenő sorrendbe rendezése:

A tömb adatainak csökkenő sorrendbe történő rendezéséhez be kell vezetnünk egy harmadik paramétert, amely az elemek rendezésének sorrendjét adja meg. Használhatjuk a „nagyobb ()” függvényt az adatok csökkenő sorrendbe rendezéséhez.

#include névtér használatával std int main () {int tömb [] = {41, 53, 4, 459, 60, 7, 23, 4, 232, 10} int n = sizeof (tömb) / sizeof (tömb [0] ) sort (tömb, tömb + n, nagyobb ()) cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Kimenet:

Exp l egy nemzet
Itt a sort () függvény összehasonlítást végez, amely nagyobb elemet tesz elé.

Folytatás ezzel a cikkel: Rendezés funkció a C ++ nyelven

Részleges_rendezés

A C ++ STL részleges rendezési funkciót biztosít számunkra, a függvény hasonló a sort () függvényhez, de a sort () függvénnyel ellentétben nem a teljes tartomány rendezésére szolgál, hanem csak egy részének rendezésére szolgál. Az [első, utolsó] tartományba rendezi az elemeket oly módon, hogy a középső elem előtti elemeket növekvő sorrendbe rendezzük, míg a középső elemeket úgy hagyjuk, ahogy vannak.

Akkor használható a legnagyobb elem megkeresésére, ha függvényobjektumot használunk az első pozíció rendezéséhez

Példa

#include #include #include névtér használatával st int main () {vector vec = {10, 45, 60, 78, 23, 21, 30} vector :: iterator iptr part_sort (vec.begin (), vec.begin () + 1, vec.end (), nagyobb ()) iptr = vec.begin () cout<< 'The largest element is = ' << *iptr return 0 } 

Kimenet:

Magyarázat:
A fenti kód felhasználható a sorozat legnagyobb számának megtalálásához, a sorozat legkisebb számának megtalálásához csak a nagyobb parancsot kell eltávolítanunk.

Így a „Rendezés funkció a C ++ -ban” c. Cikkünk végéhez értünk. Ha többet szeretne megtudni, nézze meg a Java Training by Edureka, egy megbízható online tanuló céget. Edureka's tanfolyamot úgy tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókhoz képezzen, különféle Java keretrendszerekkel, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.