Algorithms | Sorting | Question 1

• Difficulty Level : Medium
• Last Updated : 28 Jun, 2021

What is recurrence for worst case of QuickSort and what is the time complexity in Worst case?
(A) Recurrence is T(n) = T(n-2) + O(n) and time complexity is O(n^2)
(B) Recurrence is T(n) = T(n-1) + O(n) and time complexity is O(n^2)
(C) Recurrence is T(n) = 2T(n/2) + O(n) and time complexity is O(nLogn)
(D) Recurrence is T(n) = T(n/10) + T(9n/10) + O(n) and time complexity is O(nLogn)

Explanation: The worst case of QuickSort occurs when the picked pivot is always one of the corner elements in sorted array. In worst case, QuickSort recursively calls one subproblem with size 0 and other subproblem with size (n-1). So recurrence is

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

The above expression can be rewritten as

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

 `void` `exchange(``int` `*a, ``int` `*b) ` `{ ` `  ``int` `temp; ` `  ``temp = *a; ` `  ``*a   = *b; ` `  ``*b   = temp; ` `} ` `  `  `int` `partition(``int` `arr[], ``int` `si, ``int` `ei) ` `{ ` `  ``int` `x = arr[ei]; ` `  ``int` `i = (si - 1); ` `  ``int` `j; ` `  `  `  ``for` `(j = si; j <= ei - 1; j++) ` `  ``{ ` `    ``if``(arr[j] <= x) ` `    ``{ ` `      ``i++; ` `      ``exchange(&arr[i], &arr[j]); ` `    ``} ` `  ``} ` `  `  `  ``exchange (&arr[i + 1], &arr[ei]); ` `  ``return` `(i + 1); ` `} ` `  `  `/* Implementation of Quick Sort ` `arr[] --> Array to be sorted ` `si  --> Starting index ` `ei  --> Ending index ` `*/` `void` `quickSort(``int` `arr[], ``int` `si, ``int` `ei) ` `{ ` `  ``int` `pi;    ``/* Partitioning index */` `  ``if``(si < ei) ` `  ``{ ` `    ``pi = partition(arr, si, ei); ` `    ``quickSort(arr, si, pi - 1); ` `    ``quickSort(arr, pi + 1, ei); ` `  ``} ` `} `

My Personal Notes arrow_drop_up
Related Articles