logo

Snabb sortering

Det är en algoritm av Divide & Conquer-typ.

Dela upp: Ordna om elementen och dela arrayer i två underarrayer och ett element däremellan sök efter att varje element i vänster underarray är mindre än eller lika med medelelementet och att varje element i den högra undermatrisen är större än mittelementet.

Erövra: Sortera två undermatriser rekursivt.

Kombinera: Kombinera den redan sorterade arrayen.

Algoritm:

 QUICKSORT (array A, int m, int n) 1 if (n > m) 2 then 3 i ← a random index from [m,n] 4 swap A [i] with A[m] 5 o ← PARTITION (A, m, n) 6 QUICKSORT (A, m, o - 1) 7 QUICKSORT (A, o + 1, n) 

Partitionsalgoritm:

Partitionsalgoritmen omarrangerar underarrayerna på en plats.

 PARTITION (array A, int m, int n) 1 x &#x2190; A[m] 2 o &#x2190; m 3 for p &#x2190; m + 1 to n 4 do if (A[p] <x) 1 5 6 7 8 then o &larr; + swap a[o] with a[p] a[m] return < pre> <p> <strong>Figure: shows the execution trace partition algorithm</strong> </p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort.webp" alt="DAA Quick sort"> <h3>Example of Quick Sort: </h3> <pre> 44 33 11 55 77 90 40 60 99 22 88 </pre> <p>Let <strong>44</strong> be the <strong>Pivot</strong> element and scanning done from right to left</p> <p>Comparing <strong>44</strong> to the right-side elements, and if right-side elements are <strong>smaller</strong> than <strong>44</strong> , then swap it. As <strong>22</strong> is smaller than <strong>44</strong> so swap them.</p> <pre> <strong>22</strong> 33 11 55 77 90 40 60 99 <strong>44</strong> 88 </pre> <p>Now comparing <strong>44</strong> to the left side element and the element must be <strong>greater</strong> than 44 then swap them. As <strong>55</strong> are greater than <strong>44</strong> so swap them.</p> <pre> 22 33 11 <strong>44</strong> 77 90 40 60 99 <strong>55</strong> 88 </pre> <p>Recursively, repeating steps 1 &amp; steps 2 until we get two lists one left from pivot element <strong>44</strong> &amp; one right from pivot element.</p> <pre> 22 33 11 <strong>40</strong> 77 90 <strong>44</strong> 60 99 55 88 </pre> <p> <strong>Swap with 77:</strong> </p> <pre> 22 33 11 40 <strong>44</strong> 90 <strong>77</strong> 60 99 55 88 </pre> <p>Now, the element on the right side and left side are greater than and smaller than <strong>44</strong> respectively.</p> <p> <strong>Now we get two sorted lists:</strong> </p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-2.webp" alt="DAA Quick sort"> <p>And these sublists are sorted under the same process as above done.</p> <p>These two sorted sublists side by side.</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-3.webp" alt="DAA Quick sort"> <br> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-4.webp" alt="DAA Quick sort"> <h3>Merging Sublists:</h3> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-5.webp" alt="DAA Quick sort"> <p> <strong> SORTED LISTS</strong> </p> <p> <strong>Worst Case Analysis:</strong> It is the case when items are already in sorted form and we try to sort them again. This will takes lots of time and space.</p> <h3>Equation:</h3> <pre> T (n) =T(1)+T(n-1)+n </pre> <p> <strong>T (1)</strong> is time taken by pivot element.</p> <p> <strong>T (n-1)</strong> is time taken by remaining element except for pivot element.</p> <p> <strong>N:</strong> the number of comparisons required to identify the exact position of itself (every element)</p> <p>If we compare first element pivot with other, then there will be 5 comparisons.</p> <p>It means there will be n comparisons if there are n items.</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-6.webp" alt="DAA Quick sort"> <h3>Relational Formula for Worst Case:</h3> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-7.webp" alt="DAA Quick sort"> <h3>Note: for making T (n-4) as T (1) we will put (n-1) in place of &apos;4&apos; and if <br> We put (n-1) in place of 4 then we have to put (n-2) in place of 3 and (n-3) <br> In place of 2 and so on. <p>T(n)=(n-1) T(1) + T(n-(n-1))+(n-(n-2))+(n-(n-3))+(n-(n-4))+n <br> T (n) = (n-1) T (1) + T (1) + 2 + 3 + 4+............n <br> T (n) = (n-1) T (1) +T (1) +2+3+4+...........+n+1-1</p> <p>[Adding 1 and subtracting 1 for making AP series]</p> <p>T (n) = (n-1) T (1) +T (1) +1+2+3+4+........ + n-1 <br> T (n) = (n-1) T (1) +T (1) + <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-8.webp" alt="DAA Quick sort">-1</p> <p> <strong>Stopping Condition: T (1) =0</strong> </p> <p>Because at last there is only one element left and no comparison is required.</p> <p>T (n) = (n-1) (0) +0+<img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-8.webp" alt="DAA Quick sort">-1</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-9.webp" alt="DAA Quick sort"> <p> <strong>Worst Case Complexity of Quick Sort is T (n) =O (n<sup>2</sup>)</strong> </p> <h3>Randomized Quick Sort [Average Case]:</h3> <p>Generally, we assume the first element of the list as the pivot element. In an average Case, the number of chances to get a pivot element is equal to the number of items.</p> <pre> Let total time taken =T (n) For eg: In a given list p 1, p 2, p 3, p 4............pn If p 1 is the pivot list then we have 2 lists. I.e. T (0) and T (n-1) If p2 is the pivot list then we have 2 lists. I.e. T (1) and T (n-2) p 1, p 2, p 3, p 4............pn If p3 is the pivot list then we have 2 lists. I.e. T (2) and T (n-3) p 1, p 2, p 3, p 4............p n </pre> <p>So in general if we take the <strong>Kth</strong> element to be the pivot element.</p> <p> <strong>Then,</strong> </p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-10.webp" alt="DAA Quick sort"> <p>Pivot element will do n comparison and we are doing average case so,</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-11.webp" alt="DAA Quick sort"> <p> <strong>So Relational Formula for Randomized Quick Sort is:</strong> </p> <pre> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-12.webp" alt="DAA Quick sort"> = n+1 +<img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-13.webp" alt="DAA Quick sort">(T(0)+T(1)+T(2)+...T(n-1)+T(n-2)+T(n-3)+...T(0)) <br> = n+1 +<img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-13.webp" alt="DAA Quick sort">x2 (T(0)+T(1)+T(2)+...T(n-2)+T(n-1)) </pre> <pre> n T (n) = n (n+1) +2 (T(0)+T(1)+T(2)+...T(n-1)........eq 1 </pre> <p>Put n=n-1 in eq 1</p> <pre> (n -1) T (n-1) = (n-1) n+2 (T(0)+T(1)+T(2)+...T(n-2)......eq2 </pre> <p>From eq1 and eq 2</p> <p>n T (n) - (n-1) T (n-1)= n(n+1)-n(n-1)+2 (T(0)+T(1)+T(2)+?T(n-2)+T(n-1))-2(T(0)+T(1)+T(2)+...T(n-2)) <br> n T(n)- (n-1) T(n-1)= n[n+1-n+1]+2T(n-1) <br> n T(n)=[2+(n-1)]T(n-1)+2n <br> n T(n)= n+1 T(n-1)+2n</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-14.webp" alt="DAA Quick sort"> <p>Put n=n-1 in eq 3</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-15.webp" alt="DAA Quick sort"> <p>Put 4 eq in 3 eq</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-16.webp" alt="DAA Quick sort"> <p>Put n=n-2 in eq 3</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-17.webp" alt="DAA Quick sort"> <p>Put 6 eq in 5 eq</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-18.webp" alt="DAA Quick sort"> <p>Put n=n-3 in eq 3</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-19.webp" alt="DAA Quick sort"> <p>Put 8 eq in 7 eq</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-20.webp" alt="DAA Quick sort"> <br> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-21.webp" alt="DAA Quick sort"> <p>From 3eq, 5eq, 7eq, 9 eq we get</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-22.webp" alt="DAA Quick sort"> <br> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-23.webp" alt="DAA Quick sort"> <p>From 10 eq</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-24.webp" alt="DAA Quick sort"> <p>Multiply and divide the last term by 2</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-25.webp" alt="DAA Quick sort"> <p> <strong>Is the average case complexity of quick sort for sorting n elements.</strong> </p> <p> <strong>3. Quick Sort [Best Case]:</strong> In any sorting, best case is the only case in which we don&apos;t make any comparison between elements that is only done when we have only one element to sort.</p> <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-26.webp" alt="DAA Quick sort"> <hr></h3></x)>

Låta 44 bli den Svänga element och skanning görs från höger till vänster

Jämförande 44 till högerelementen, och om högerelementen är det mindre än 44 , byt sedan ut det. Som 22 är mindre än 44 så byt dem.

 <strong>22</strong> 33 11 55 77 90 40 60 99 <strong>44</strong> 88 

Jämför nu 44 till vänster sida element och elementet måste vara större än 44 byt sedan ut dem. Som 55 är större än 44 så byt ut dem.

 22 33 11 <strong>44</strong> 77 90 40 60 99 <strong>55</strong> 88 

Rekursivt, upprepa steg 1 och steg 2 tills vi får två listor en kvar från pivotelementet 44 & en direkt från pivotelementet.

 22 33 11 <strong>40</strong> 77 90 <strong>44</strong> 60 99 55 88 

Byt med 77:

 22 33 11 40 <strong>44</strong> 90 <strong>77</strong> 60 99 55 88 

Nu är elementet på höger sida och vänster sida större än och mindre än 44 respektive.

Nu får vi två sorterade listor:

DAA Snabb sortering

Och dessa underlistor sorteras under samma process som ovan.

Dessa två sorterade underlistor sida vid sida.

DAA Snabb sortering
DAA Snabb sortering

Slå samman underlistor:

DAA Snabb sortering

SORTERADE LISTOR

Worst Case-analys: Det är fallet när artiklar redan är i sorterad form och vi försöker sortera dem igen. Detta kommer att ta mycket tid och utrymme.

Ekvation:

 T (n) =T(1)+T(n-1)+n 

T (1) är tid som tas av pivotelementet.

T (n-1) är den tid som det återstående elementet tar utom för pivotelementet.

N: antalet jämförelser som krävs för att identifiera den exakta positionen för sig själv (varje element)

Om vi ​​jämför första elementets pivot med andra, så blir det 5 jämförelser.

Det betyder att det blir n jämförelser om det finns n objekt.

DAA Snabb sortering

Relationsformel för värsta fall:

DAA Snabb sortering

Obs: för att göra T (n-4) som T (1) sätter vi (n-1) i stället för '4' och om
Vi sätter (n-1) i stället för 4 och sedan måste vi sätta (n-2) i stället för 3 och (n-3)
I stället för 2 och så vidare.

T(n)=(n-1) T(1) + T(n-(n-1))+(n-(n-2))+(n-(n-3))+(n-( n-4))+n
T (n) = (n-1) T (1) + T (1) + 2 + 3 + 4+............n
T (n) = (n-1) T (1) +T (1) +2+3+4+...........+n+1-1

[Att lägga till 1 och subtrahera 1 för att göra AP-serier]

T (n) = (n-1) T (1) +T (1) +1+2+3+4+........ + n-1
T (n) = (n-1) T (1) + T (1) + DAA Snabb sortering-1

Stopptillstånd: T (1) =0

För äntligen finns det bara ett element kvar och ingen jämförelse krävs.

T (n) = (n-1) (0) +0+ DAA Snabb sortering-1

DAA Snabb sortering

Värsta fallets komplexitet för snabbsortering är T (n) =O (n2)

Randomiserad snabbsortering [Genomsnittligt fall]:

I allmänhet antar vi det första elementet i listan som pivotelement. I ett genomsnittligt fall är antalet chanser att få ett pivotelement lika med antalet objekt.

 Let total time taken =T (n) For eg: In a given list p 1, p 2, p 3, p 4............pn If p 1 is the pivot list then we have 2 lists. I.e. T (0) and T (n-1) If p2 is the pivot list then we have 2 lists. I.e. T (1) and T (n-2) p 1, p 2, p 3, p 4............pn If p3 is the pivot list then we have 2 lists. I.e. T (2) and T (n-3) p 1, p 2, p 3, p 4............p n 

Så i allmänhet om vi tar Kth element för att vara pivotelementet.

Sedan,

DAA Snabb sortering

Pivotelement kommer att göra en jämförelse och vi gör genomsnittliga fall så,

DAA Snabb sortering

Så relationsformeln för randomiserad snabbsortering är:

 <img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-12.webp" alt="DAA Quick sort"> = n+1 +<img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-13.webp" alt="DAA Quick sort">(T(0)+T(1)+T(2)+...T(n-1)+T(n-2)+T(n-3)+...T(0)) <br> = n+1 +<img src="//techcodeview.com/img/daa-tutorial/50/quick-sort-13.webp" alt="DAA Quick sort">x2 (T(0)+T(1)+T(2)+...T(n-2)+T(n-1)) 
 n T (n) = n (n+1) +2 (T(0)+T(1)+T(2)+...T(n-1)........eq 1 

Sätt n=n-1 i ekv 1

 (n -1) T (n-1) = (n-1) n+2 (T(0)+T(1)+T(2)+...T(n-2)......eq2 

Från eq1 och eq 2

nT (n) - (n-1) T (n-1)= n(n+1)-n(n-1)+2 (T(0)+T(1)+T(2)+? T(n-2)+T(n-1))-2(T(0)+T(1)+T(2)+...T(n-2))
n T(n)- (n-1) T(n-1)= n[n+1-n+1]+2T(n-1)
nT(n)=[2+(n-1)]T(n-1)+2n
nT(n)= n+1 T(n-1)+2n

tolkar sträng till int
DAA Snabb sortering

Sätt n=n-1 i ekv 3

DAA Snabb sortering

Lägg 4 ekv i 3 ekv

DAA Snabb sortering

Sätt n=n-2 i ekv 3

DAA Snabb sortering

Lägg 6 ekv i 5 ekv

DAA Snabb sortering

Sätt n=n-3 i ekv 3

DAA Snabb sortering

Sätt 8 ekv i 7 ekv

DAA Snabb sortering
DAA Snabb sortering

Från 3eq, 5eq, 7eq, 9 eq får vi

DAA Snabb sortering

Från 10 ekv

Multiplicera och dividera den sista termen med 2

Är den genomsnittliga fallkomplexiteten av snabb sortering för sortering av n element.

3. Snabbsortering [Bästa fall]: I varje sortering är bästa fallet det enda fallet där vi inte gör någon jämförelse mellan element som bara görs när vi bara har ett element att sortera.