Allt du behöver veta om Quicksort i C ++



Den här artikeln ger dig en detaljerad och omfattande kunskap om hur du implementerar Quicksort i C ++ med exempel.

Det finns en uppsjö av sorteringsalgoritmer. Att hitta rätt passform för din applikation är en uppgift som kräver en kort förståelse av faktorer som prestanda, tidskomplexitet, kodlängd etc. för en viss algoritm. I det här inlägget tar vi en titt på alla viktiga begrepp som krävs för att implementera Quicksort i C ++ i följande ordning:

skillnad mellan kast och kast

Förstå Quicksort-algoritmen

Precis som Slå ihop sortering , Quicksort följer uppdelnings- och erövringsstrategin. Genom att använda delnings- och erövringsstrategin delar vi upp problemet i många delproblem och löser dem rekursivt. Först kommer vi att förstå hela processen steg för steg och efter det, med hjälp av ett exempel, kommer vi att utveckla en djup förståelse för hela processen.





  1. Först kommer vi att be om den osorterade matrisen från användaren.

  2. När vi väl har vår osorterade array måste vi välja ett pivotvärde från arrayen. Vi kan välja vilket värde som helst.



  3. När vi väl har valt punkten därefter måste vi ordna de andra elementen i arrayen på ett sådant sätt att alla element som är mindre än pivotvärdet ska placeras till höger om pivotvärdet och alla element som är större än pivot värdet ska placeras till höger om pivotvärdet.

  4. Vi utför steg 3 tills vi får vår sorterade matris.

Nu ska vi överväga ett exempel och implementera algoritmen och se hur den fungerar.



Hej [5, 4, 1, 11, 9, 6, 2, 3] för detta exempel kommer vi alltid att betrakta ledet som det längsta elementet i listan.

Snabbsort i C ++

Låt oss gå igenom varje steg och förstå logiken som vi använde för att lösa problemet.

längden på en array-javascript
  • Först valde vi '3' som vår pivot och ordnade alla element mindre än '3' till höger och alla element större än '3' till höger.

  • Vid denna tidpunkt har vi två delproblem. Låt oss först lösa delproblemet till höger. Vi valde en som vår pivot och placerade ”2” till höger.

  • För att lösa det andra delproblemet väljer vi '6' som vårt led och placerar elementen som vi diskuterade tidigare.

  • Vi har ytterligare 2 delproblem. Den första löses genom att välja 4 som pivot och den andra löses genom att välja 9 som pivot. Slutligen har vi vår sorterade matris med elementen placerade i understrykningsindexet.

Notera- Den viktiga punkten att förstå här är att alla operationer sker i samma array. Nya matriser skapas inte.

Pseudokod för Quicksort i C ++

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

Program för Quicksort i C ++

Vi förstod algoritmen och utvecklade en djup förståelse för hur algoritmen fungerar. Låt oss implementera Quicksort i C ++ och skriva ett program för att sortera en matris.

# inkludera att använda namespace std void swap_elements (int * a, int * b) {int temp = * a * a = * b * b = temp} int partition (int array [], int start_index, int end_index) {int pivot = array [end_index] int i = (start_index - 1) för (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 kostnad<<'Enter the elements one by one: ' for(i=0i>Hej [i]} quickSort (Hello, 0, NumberofElements-1) printArray (Hello, NumberofElements) return 0}

Produktion:

Tidskomplexitet

Låt oss prata om den viktigaste aspekten av vilken sorteringsalgoritm som helst, dvs. tidskomplexitet. Den berättar om algoritmens prestanda i olika scenarier. Dessa värden kan hjälpa oss att avgöra om vi kan använda denna algoritm för vår applikation.

casting double to int i java
  • Bästa fall- På)
  • Genomsnittligt fall- (nlogn)
  • Värsta fall- 2)

Med detta kommer vi till ett slut på denna Quicksort i C ++ - artikel. Om du vill veta mer, kolla in av Edureka, ett pålitligt online-lärande företag. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för att träna dig för både grundläggande och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen på den här bloggen så kommer vi tillbaka till dig så snart som möjligt.