C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Quick sortIt is an algorithm of Divide & Conquer type. Divide: Rearrange the elements and split arrays into two sub-arrays and an element in between search that each element in left sub array is less than or equal to the average element and each element in the right sub- array is larger than the middle element. Conquer: Recursively, sort two sub arrays. Combine: Combine the already sorted array. Algorithm: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) Partition Algorithm:Partition algorithm rearranges the sub arrays in a place. PARTITION (array A, int m, int n) 1 x ← A[m] 2 o ← m 3 for p ← m + 1 to n 4 do if (A[p] < x) 5 then o ← o + 1 6 swap A[o] with A[p] 7 swap A[m] with A[o] 8 return o Figure: shows the execution trace partition algorithm Example of Quick Sort:44 33 11 55 77 90 40 60 99 22 88 Let 44 be the Pivot element and scanning done from right to left Comparing 44 to the right-side elements, and if right-side elements are smaller than 44, then swap it. As 22 is smaller than 44 so swap them. 22 33 11 55 77 90 40 60 99 44 88 Now comparing 44 to the left side element and the element must be greater than 44 then swap them. As 55 are greater than 44 so swap them. 22 33 11 44 77 90 40 60 99 55 88 Recursively, repeating steps 1 & steps 2 until we get two lists one left from pivot element 44 & one right from pivot element. 22 33 11 40 77 90 44 60 99 55 88 Swap with 77: 22 33 11 40 44 90 77 60 99 55 88 Now, the element on the right side and left side are greater than and smaller than 44 respectively. Now we get two sorted lists: And these sublists are sorted under the same process as above done. These two sorted sublists side by side. Merging Sublists:SORTED LISTS Worst Case Analysis: 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. Equation:T (n) =T(1)+T(n-1)+n T (1) is time taken by pivot element. T (n-1) is time taken by remaining element except for pivot element. N: the number of comparisons required to identify the exact position of itself (every element) If we compare first element pivot with other, then there will be 5 comparisons. It means there will be n comparisons if there are n items. Relational Formula for Worst Case:Note: for making T (n-4) as T (1) we will put (n-1) in place of '4' and if |