Alles wat u moet weten over Quicksort in C ++



Dit artikel biedt u een gedetailleerde en uitgebreide kennis over hoe u Quicksort in C ++ met voorbeelden kunt implementeren.

Er is een overvloed aan sorteeralgoritmen. Het vinden van de juiste oplossing voor uw toepassing is een taak die een kort begrip vereist van factoren zoals prestatie, tijdcomplexiteit, lengte van code, enz. Van een bepaald algoritme. In dit bericht zullen we alle essentiële concepten bekijken die nodig zijn om de Quicksort in C ++ te implementeren in de volgende volgorde:

c ++ sort ()

Inzicht in het Quicksort-algoritme

Net als Samenvoegen Sorteren , Quicksort volgt de verdeel en heersstrategie. Door gebruik te maken van de verdeel en heers strategie verdelen we het probleem in vele deelproblemen en lossen deze recursief op. Eerst zullen we het hele proces stap voor stap begrijpen en daarna zullen we met behulp van een voorbeeld een diepgaand begrip van het hele proces ontwikkelen.





  1. Eerst zullen we de ongesorteerde array van de gebruiker vragen.

  2. Zodra we onze ongesorteerde array hebben, moeten we een draaipuntwaarde uit de array selecteren. We kunnen elke waarde kiezen.



  3. Zodra we het draaipunt daarna hebben geselecteerd, moeten we de andere elementen van de array zo rangschikken dat alle elementen kleiner dan de draaipuntwaarde rechts van de draaipuntwaarde moeten worden geplaatst en alle elementen groter dan het draaipunt waarde moeten rechts van de draaipuntwaarde worden geplaatst.

  4. We voeren stap 3 uit totdat we onze gesorteerde array hebben.

Laten we nu een voorbeeld bekijken en het algoritme implementeren en kijken hoe het werkt.



Hallo [5, 4, 1, 11, 9, 6, 2, 3] voor dit voorbeeld zullen we altijd het draaipunt beschouwen als het meest rechtse element van de lijst.

Quicksort in C ++

Laten we elke stap doorlopen en de logica begrijpen die we hebben gebruikt om het probleem op te lossen.

  • Eerst hebben we ‘3’ als onze spil gekozen en alle elementen kleiner dan ‘3’ naar rechts gerangschikt en alle elementen groter dan ‘3’ naar rechts.

  • Op dit moment hebben we 2 subproblemen. Laten we eerst het subprobleem aan de rechterkant oplossen. We kozen er een als onze spil en plaatsten ‘2’ aan de rechterkant.

  • Om het tweede subprobleem op te lossen, selecteren we ‘6’ als onze spil en plaatsen we de elementen zoals we eerder hebben besproken.

  • We hebben nog 2 subproblemen. De eerste wordt opgelost door 4 als draaipunt te selecteren en de tweede wordt opgelost door 9 als draaipunt te selecteren. Ten slotte hebben we onze gesorteerde array met de elementen op de onderstreepte index.

Opmerking- Het belangrijkste punt om hier te begrijpen is dat alle bewerkingen plaatsvinden in dezelfde array. Er worden geen nieuwe arrays gemaakt.

Pseudocode voor Quicksort in C ++

QuickSort (array [], start_index, end_index) {if (start_index

Programma van Quicksort in C ++

We begrepen het algoritme en ontwikkelden een diepgaand begrip van de werking van het algoritme. Laten we Quicksort implementeren in C ++ en een programma schrijven om een ​​array te sorteren.

#include met gebruik van naamruimte std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} int partitie (int array [], int start_index, int end_index) {int pivot = array [end_index] int i = (start_index - 1) voor (int j = start_index j<= end_index- 1 j++) { if (array[j] <= pivot) { i++ swap_elements(&array[i], &array[j]) } } swap_elements(&array[i + 1], &array[end_index]) return (i + 1) } void quickSort(int array[], int start_index, int end_index) { if (start_index < end_index) { int partition_index = partition(array, start_index, end_index) quickSort(array, start_index, partition_index - 1) quickSort(array, partition_index + 1, end_index) } } void printArray(int array[], int number) { int i cout<<'Sorted Array: ' for (i = 0 i < number i++) cout << array[i] << ' ' cout << endl } int main() { int Hello[30] int i int NumberofElements cout<>NumberofElements-kosten<<'Enter the elements one by one: ' for(i=0i>Hallo [i]} quickSort (Hallo, 0, NumberofElements-1) printArray (Hallo, NumberofElements) retourneren 0}

Uitgang:

Tijdscomplexiteit

Laten we het hebben over het belangrijkste aspect van elk sorteeralgoritme, namelijk tijdcomplexiteit. Het vertelt ons over de prestaties van het algoritme in verschillende scenario's. Deze waarden kunnen ons helpen beslissen of we dit algoritme kunnen gebruiken voor onze toepassing.

  • Beste geval- Aan)
  • Gemiddeld geval (nlogn)
  • Het slechtste geval- Aan2)

Hiermee komen we aan het einde van dit Quicksort in C ++ artikel. Als je meer wilt weten, bekijk dan de door Edureka, een vertrouwd online leerbedrijf. Edureka's Java J2EE- en SOA-trainings- en certificeringscursus is ontworpen om u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van deze blog en we nemen zo snel mogelijk contact met je op.

php zet string om in array