Com implementar la funció d'ordenació a C ++?



Aquest article us ajudarà a explorar la funció d’ordenació en c ++ i en el procés us oferirà una demostració detallada del concepte

Classificació és una de les funcions més bàsiques i útils aplicades a les dades. El seu objectiu és organitzar les dades d'una manera particular, que pot augmentar o disminuir segons els requisits. Hi ha una funció integrada a C ++ STL amb el nom de ‘sort ()’ que ens permet realitzar algoritmes d’ordenació fàcilment. En aquest article explorarem la funció d’ordenació en C ++,

En aquest article es tractaran els següents indicadors:





Continuem amb aquest article sobre la funció d’ordenació a C ++

Ordena ( ) funció

És una funció integrada del fitxer de capçalera d'algoritme que s'utilitza per ordenar els contenidors com una matriu, vectors en un ordre especificat. Internament, aquesta funció s'implementa com a Sortida ràpida
Quicksort és un algorisme de divisió i conquesta. Quicksort divideix primer una gran llista d’elements en dues sub-llistes més petites: els elements inferiors i els elements superiors. Quicksort ordena recursivament les sub-llistes.



Els passos són els següents:
1. Trieu un element aleatori (normalment l'últim element), anomenat pivot, de la llista.
2. Torneu a ordenar la llista de manera que tots els elements amb valors inferiors al pivot passin per davant del pivot, mentre que tots els elements amb valors superiors al pivot apareguin darrere d'ella i els valors iguals puguin anar de qualsevol manera en aquest procés.
3. Ordeneu recursivament la sub-llista d'elements menors i la sub-llista d'elements més grans, torneu a seleccionar un pivot a la sub-llista i dividiu-los.
El cas bàsic de la recursió són llistes de mida zero o una, que mai no s’han d’ordenar i, per tant, combinant-les ordenem la nostra llista.

saltstack vs titella vs xef

Quicksort és més ràpid a la pràctica que altres algorismes O (n log n), com ara Ordre per inserció o Ordenació per bombolla. Quicksort es pot implementar amb un algorisme de partició al lloc, cosa que significa que tota la classificació es pot fer només amb O (registre n) d'espai addicional. Quicksort no és un tipus estable.
La seva complexitat és la següent:
Millor cas: O (n registre n)
El pitjor cas: O (n ^ 2)
Mitjana de majúscules - O (n registre n)

Sintaxi:
ordenar (primer, darrer)
Aquí,
primer: és l’índex (punter) del primer element de l’interval a ordenar.
last: és l’índex (punter) de l’últim element de l’interval a ordenar.
Per exemple, volem ordenar els elements d’una matriu ‘arr’ d’1 a 10 posicions, utilitzarem sort (arr, arr + 10) i ordenarà 10 elements en ordre ascendent.
Valor de retorn
Cap



Complexitat

La mitjana d’una complexitat de classificació és N * log2 (N), on N = últim - primer.

Interval de dades
L'objecte de l'interval [primer, darrer] es modifica.

Excepcions
Les sobrecàrregues amb un paràmetre de plantilla anomenat ExecutionPolicy informen dels errors de la següent manera:
Si l'algorisme no assigna memòria, es llança std :: bad_alloc com a excepció.
Si l'execució d'una funció invocada com a part de l'algorisme genera una excepció std :: terminate.

Continuem amb aquest article sobre la funció d’ordenació a C ++

Exemple: per ordenar les dades en ordre ascendent:

#include using namespace std int main () {int array [] = {10, 35, 85, 93, 62, 77, 345, 43, 2, 10} int n = sizeof (array) / sizeof (array [0] ) // 'sizeof' dóna la mida de la matriu total, és a dir, la mida de cada caràcter * no. de caràcters // així que per obtenir el núm. de caràcters // dividim la mida de (matriu) amb la mida de qualsevol caràcter de la matriu // aquí es tracta de matriu [0] sort (matriu, matriu + n)<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Sortida:

Sortida: funció d’ordenació a C ++ - Edureka

Explicació

De l'exemple anterior, veiem que la funció sort () per defecte ordena una matriu en ordre ascendent.

Continuem amb aquest article sobre la funció d’ordenació a C ++

Exemple: per ordenar les dades en ordre descendent:

Per ordenar les dades de la matriu en ordre descendent, hem d’introduir un tercer paràmetre que s’utilitza per especificar l’ordre en què s’han d’ordenar els elements. Podem utilitzar la funció 'greater ()' per ordenar les dades en ordre descendent.

#include using namespace std int main () {int array [] = {41, 53, 4, 459, 60, 7, 23, 4, 232, 10} int n = sizeof (array) / sizeof (array [0] ) ordenar (matriu, matriu + n, major ()) cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Sortida:

exp l anació
Aquí la funció sort () fa una comparació d'una manera que posa abans un element més gran.

Continuem amb aquest article sobre la funció d’ordenació a C ++

Sort_partial

C ++ STL ens proporciona una funció d’ordenació parcial, la funció és similar a la funció sort (), però a diferència de la funció sort () no s’utilitza per ordenar tot l’interval, sinó que s’utilitza només per ordenar-ne una sub-part. Ordena els elements del rang de [primer, darrer), de manera que els elements anteriors a l'element mitjà s'ordenen en ordre ascendent, mentre que els elements posteriors al mig es deixen tal qual.

Es pot utilitzar per trobar l'element més gran si fem servir un objecte de funció per ordenar la primera posició

Exemple

#include #include #include using namespace std int main () {vector vec = {10, 45, 60, 78, 23, 21, 30} vector :: iterator iptr partial_sort (vec.begin (), vec.begin () + 1, vec.end (), greater ()) iptr = vec.begin () cout<< 'The largest element is = ' << *iptr return 0 } 

Sortida:

és un postgrau de màster

Explicació:
El codi anterior es pot utilitzar per trobar el nombre més gran d'una sèrie; per trobar el nombre més petit de la sèrie, només necessitem eliminar l'ordre més gran.

Així hem arribat al final d’aquest article sobre ‘Funció d’ordenació en C ++’. Si voleu obtenir més informació, consulteu el programa Java Training d’Edureka, una empresa d’aprenentatge en línia de confiança. D’Edureka Curs estan dissenyats per formar-vos tant per conceptes bàsics com avançats de Java juntament amb diversos marcs Java com Hibernate & Spring.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc i us respondrem el més aviat possible.