Designing Algorithms
Insertion sort is an incremental algorithm.
Sorting via divide and conquer : (using recursion)
- Divide: big problems into several small problems
- Conquer: solve "easy" small problems
- Combine: put small solutions together
Merge Sort ( divide and conquer)
Recursively : Divide list in half
: Sort if only one item in list
: Merge
Merging two sorted lists (cards perhaps) of combined size n takes n steps.
Routines:
Merge-Sort ( A, p, r ) sorts A[p...r]
Merge ( A, p, q, r) merges A[p...r] & A[q+1...r] in sorted order.
Note: Dividing recursively works best when n = 2k
Merge-Sort ( A, p, r )
if p < r
then q ¬ ë( p + r ) / 2 û // closest integer to the mid-point
Merge-Sort ( A, p, r )
Merge-Sort ( A, q + 1, r )
Merge ( A, p, q, r )
T (n ) = Q (1) if n = 1
= 2T ( n / 2 ) + Q (n) if n > 1
T (n) = Q (n lg n)
|