What is Quicksorts best, worst and average runtimes? Is it stable and in-place?
Best: n log n
Worst: n²
Average: n log n
Stable: Not stable but can be
In-place: Yes
note:
If the list is implemented as an array, this can be done in-place and with at most n comparisons
What is Merge Sorts best, worst and average runtimes? Is it stable and in-place?
Best, worst and avg are all
n log n
Stable: Mostly
In-place: No
In any case the number of comparisons is in Θ(n)
What is Heap Sorts best, worst and average runtimes? Is it stable and in-place?
Best, worst and avg are all
n log n
Stable: No
In-place: Sure?
What is BubbleSorts best, worst and average runtimes? Is it stable and in-place?
Best: n
Worst: n²
Avg: n²
Stable: Yes
In-place: Yes
What is Insertion Sorts best, worst and average runtimes? Is it stable and in-place?
Best: n
Worst: n²
Avg: n²
Stable: Yes
In-place: Yes
What is Selection Sorts best, worst and average runtimes? Is it stable and in-place?
Best, worst and avg are all
n²
Stable: No
In-place: Yes
In practice, it is not as fast as insertion sort
Shell Sort
Almost nothing is known about average-case running time of Shellsort.
O(n 7/6 ) avg case
Values of h chosen from all relevant numbers of the form 2 i3 j have been proved to give O(n(log n) 2 ) running time
Mergesort recurrence I
C(n) = 2C(n/2) + n
= 2(2C(n/4) + n/2) + n
= 4C(n/4) + 2n = . . .
= 2kC(1) + kn
= n lg n.
Quicksort recurrence

Θ(nlogn)
if 1/n instead of 2/n we get
Θ(nl)
What are some mergesort properties?
Based on a recursive divide-and-conquer approach:
Worst-case running time of Θ(n log n)
One of the best external (disk) sorting algorithms.
Works well for linked lists in addition to arrays/vectors
What are some quicksort properties?
Quicksort is based on a recursive partitioning about a ‘pivot’:
In practice, a very fast sorting algorithm (almost twice as fast as mergesort)
On average good O(n lg n), but worst case input data leads to Ω( n2 ) performance
What are 3 different ways to choose a quicksort pivot?
What is beadsort and what is its runtime complexity range?
Sorting algorithm which sorts positive integers by representing them in unary as a sequence of beads on a horizontal lines then uses gravity to sort them with the assistance of vertical rods
The algorithm’s run-time complexity ranges from O(1) to O(S), where S is the sum of the input integers
Quicksort recurrence relations and runtime
Best case: O(n lg n) is when partitioning gives partitions of the same size. Cost is:
T(n) = 2T((n − 1)/2) + n for unique elements
OR
T(n) = 2T(n/3) + n when duplicates allowed
Worst case: O( n2 ) is when partitioning gives unbalanced partitions.
T(n) = T(n − 1) + n