Sådan implementeres sorteringsfunktion i C ++?



Denne artikel hjælper dig med at udforske sorteringsfunktionen i c ++ og i processen give dig en detaljeret demonstration af konceptet

Sortering er en af ​​de mest basale og nyttige funktioner, der anvendes til data. Det sigter mod at arrangere data på en bestemt måde, som kan være stigende eller faldende i henhold til kravene. Der er en indbygget funktion i C ++ STL med navnet 'sort ()', der giver os mulighed for let at udføre sorteringsalgoritme. I denne artikel vil vi udforske sorteringsfunktion i C ++,

Følgende punkter vil blive dækket af denne artikel:





mutable klasse i java eksempel

Fortsætter med denne artikel om sorteringsfunktion i C ++

Sortere ( ) funktion

Det er en indbygget funktion af algoritmehovedfilen, den bruges til at sortere containerne som et array, vektorer i en bestemt rækkefølge. Internt er denne funktion implementeret som Quick-sort
Quicksort er en kløft- og erobringsalgoritme. Quicksort opdeler først en stor liste med elementer i to mindre underlister: de lavere og de højere elementer. Quicksort sorterer derefter underlisterne rekursivt.



Trinene er som følger:
1. Vælg et tilfældigt element (normalt det sidste element), kaldet en pivot, fra listen.
2. Omarranger listen på en sådan måde, at alle elementer med værdier, der er mindre end pivoten, kommer før pivoten, mens alle elementer med værdier, der er større end pivoten, kommer efter den, og lige værdier kan gå på begge måder, dette kaldes proces kaldes partitionshandling.
3. Rekursivt sortere underlisten med mindre elementer og underlisten med større elementer, vælg igen en pivot i underlisten og del dem.
Basissagen til rekursionen er lister af størrelse nul eller en, som aldrig behøver at blive sorteret, og ved at kombinere dem sorterer vi derfor vores liste.

Quicksort er hurtigere i praksis end andre O (n log n) algoritmer som Insertion Sort eller Bubble sort. Quicksort kan implementeres med en in-place partitioneringsalgoritme, hvilket betyder, at hele sorteringen kun kan udføres med kun O (log n) ekstra plads. Quicksort er ikke en stabil slags.
Dens kompleksitet er som følger:
Bedste tilfælde - O (n log n)
Værste tilfælde - O (n ^ 2)
Gennemsnitlig sag - O (n log n)

Syntaks:
sorter (første, sidste)
Her,
første - er indekset (markøren) for det første element i det område, der skal sorteres.
sidste - er indekset (markøren) for det sidste element i det område, der skal sorteres.
For eksempel vil vi sortere elementer i en matrix 'arr' fra 1 til 10 position, vi vil bruge sortere (arr, arr + 10), og det vil sortere 10 elementer i stigende rækkefølge.
Returneringsværdi
Ingen



Kompleksitet

Gennemsnittet af en slags kompleksitet er N * log2 (N), hvor N = sidste - først.

Dataområde
Objektet i området [første, sidste) er ændret.

Undtagelser
Overbelastningen med en skabelonparameter, der er navngivet som ExecutionPolicy-rapportfejl som følger:
Hvis algoritmen ikke tildeler hukommelse, kastes std :: bad_alloc som en undtagelse.
Hvis udførelsen af ​​en funktion, der påberåbes som en del af algoritmen, kaster den en undtagelse std :: terminate.

Fortsætter med denne artikel om sorteringsfunktion i C ++

Eksempel - Sådan sorteres data i stigende rækkefølge:

#include ved hjælp af namespace std int main () {int array [] = {10, 35, 85, 93, 62, 77, 345, 43, 2, 10} int n = sizeof (array) / sizeof (array [0] ) // 'sizeof' giver størrelsen på det samlede array, dvs. størrelsen på hvert tegn * nr. af tegn // så for at få nej. af tegn // vi deler størrelsen på (array) med størrelsen på et hvilket som helst tegn i arrayet // her er det array [0] sort (array, array + n) cout<< 'nArray after sorting using ' 'default sort is : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Output:

Output- Sorteringsfunktion i C ++ - Edureka

Forklaring

Fra ovenstående eksempel ser vi, at sorteringsfunktionen () som standard sorterer en matrix i stigende rækkefølge.

Fortsætter med denne artikel om sorteringsfunktion i C ++

Eksempel - Sådan sorteres data i faldende rækkefølge:

For at sortere dataene i array i faldende rækkefølge skal vi introducere en tredje parameter, der bruges til at specificere den rækkefølge, som elementerne skal sorteres i. Vi kan bruge funktionen “større ()” til at sortere dataene i faldende rækkefølge.

bedste java ide til ubuntu
#include ved hjælp af namespace std int main () {int array [] = {41, 53, 4, 459, 60, 7, 23, 4, 232, 10} int n = sizeof (array) / sizeof (array [0] ) sorter (array, array + n, større ()) cout<< 'Array after sorting : n' for (int i = 0 i < n ++i) cout << array[i] << ' ' return 0 } 

Produktion:

Exp l anation
Her sorterer () funktionen en sammenligning på en måde, der sætter større element før.

Fortsætter med denne artikel om sorteringsfunktion i C ++

Delvis_sort

C ++ STL giver os en delvis sorteringsfunktion, funktionen ligner sorteringsfunktionen (), men i modsætning til sorteringsfunktionen () bruges den ikke til at sortere hele området, men den bruges til kun at sortere en del af den. Det sorterer elementerne i området [første, sidste) på en sådan måde, at elementerne før midterste element sorteres i stigende rækkefølge, mens elementerne efter midten efterlades, som det er.

Det kan bruges til at finde det største element, hvis vi bruger et funktionsobjekt til at sortere efter den første position

Eksempel

#include #include #include ved hjælp af 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 (), større ()) iptr = vec.begin () cout<< 'The largest element is = ' << *iptr return 0 } 

Produktion:

Forklaring:
Ovenstående kode kan bruges til at finde det største antal i en serie, for at finde det mindste antal i serier skal vi bare fjerne den større kommando.

Således er vi nået til slutningen af ​​denne artikel om 'Sorteringsfunktion i C ++'. Hvis du ønsker at lære mere, skal du tjekke Java Training af Edureka, et betroet online læringsfirma. Edureka's Kurset er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.