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)

 

Introduction - 4 of 4