Merge Sorting explained

download Merge Sorting explained

of 27

Transcript of Merge Sorting explained

  • 7/29/2019 Merge Sorting explained

    1/27

    David Luebke 1 3/17/2013

    CS 332: Algorithms

    Merge Sort

    Solving Recurrences

    The Master Theorem

  • 7/29/2019 Merge Sorting explained

    2/27

    David Luebke 2 3/17/2013

    Administrative Question

    Who here cannotmake Monday-Wednesday

    office hours at 10 AM?

    If nobody, should we change class time?

  • 7/29/2019 Merge Sorting explained

    3/27

    David Luebke 3 3/17/2013

    Homework 1

    Homework 1 will be posted later today

    (Problem with the exercise numbering, sorry)

    Due Monday Jan 28 at 9 AM

    Should be a fairly simple warm-up problem set

  • 7/29/2019 Merge Sorting explained

    4/27

    David Luebke 4 3/17/2013

    Review: Asymptotic Notation

    Upper Bound Notation:

    f(n) is O(g(n)) if there exist positive constants c

    and n0such that f(n) c g(n) for all n n0

    Formally, O(g(n)) = { f(n): positive constants cand n0such that f(n) c g(n) n n0

    Big O fact:

    A polynomial of degree kis O(nk)

  • 7/29/2019 Merge Sorting explained

    5/27

    David Luebke 5 3/17/2013

    Review: Asymptotic Notation

    Asymptotic lower bound:

    f(n) is (g(n)) if positive constants c and n0suchthat 0 cg(n) f(n) n n0

    Asymptotic tight bound:

    f(n) is (g(n)) if positive constants c1, c2, and n0such that c1 g(n) f(n) c2 g(n) n n0

    f(n) = (g(n)) if and only iff(n) = O(g(n)) AND f(n) = (g(n))

  • 7/29/2019 Merge Sorting explained

    6/27

    David Luebke 6 3/17/2013

    Other Asymptotic Notations

    A function f(n) is o(g(n)) if positiveconstants c and n0such that

    f(n) < c g(n) n n0

    A function f(n) is (g(n)) if positiveconstants c and n0such that

    c g(n) < f(n) n n0

    Intuitively, o() is like

    () is like

    () is like =

  • 7/29/2019 Merge Sorting explained

    7/27David Luebke 7 3/17/2013

    Merge Sort

    MergeSort(A, left, right) {

    if (left < right) {

    mid = floor((left + right) / 2);

    MergeSort(A, left, mid);

    MergeSort(A, mid+1, right);Merge(A, left, mid, right);

    }

    }

    // Merge() takes two sorted subarrays of A and

    // merges them into a single sorted subarray of A

    // (how long should this take?)

  • 7/29/2019 Merge Sorting explained

    8/27David Luebke 8 3/17/2013

    Merge Sort: Example

    Show MergeSort() running on the array

    A = {10, 5, 7, 6, 1, 4, 8, 3, 2, 9};

  • 7/29/2019 Merge Sorting explained

    9/27David Luebke 9 3/17/2013

    Analysis of Merge Sort

    Statement Effort

    So T(n) = (1) when n = 1, and2T(n/2) + (n) when n > 1

    So what (more succinctly) is T(n)?

    MergeSort(A, left, right) { T(n)

    if (left < right) { (1)mid = floor((left + right) / 2); (1)MergeSort(A, left, mid); T(n/2)MergeSort(A, mid+1, right); T(n/2)

    Merge(A, left, mid, right); (n)}

    }

  • 7/29/2019 Merge Sorting explained

    10/27David Luebke 10 3/17/2013

    Recurrences

    The expression:

    is a recurrence. Recurrence: an equation that describes a function

    in terms of its value on smaller functions

    1

    22

    1

    )(

    ncnn

    T

    nc

    nT

  • 7/29/2019 Merge Sorting explained

    11/27David Luebke 11 3/17/2013

    Recurrence Examples

    0

    0

    )1(

    0)(

    n

    n

    nscns

    0)1(

    00)(

    nnsn

    nns

    12

    2

    1

    )(

    ncn

    T

    nc

    nT

    1

    1

    )(

    ncnb

    naT

    nc

    nT

  • 7/29/2019 Merge Sorting explained

    12/27David Luebke 12 3/17/2013

    Solving Recurrences

    Substitution method

    Iteration method

    Master method

  • 7/29/2019 Merge Sorting explained

    13/27David Luebke 13 3/17/2013

    Solving Recurrences

    The substitution method (CLR 4.1)

    A.k.a. the making a good guess method

    Guess the form of the answer, then use induction

    to find the constants and show that solution works

    Examples:

    T(n) = 2T(n/2) + (n) T(n) = (n lg n)

    T(n) = 2T(n/2) + n ???

  • 7/29/2019 Merge Sorting explained

    14/27David Luebke 14 3/17/2013

    Solving Recurrences

    The substitution method (CLR 4.1)

    A.k.a. the making a good guess method

    Guess the form of the answer, then use induction

    to find the constants and show that solution works

    Examples:

    T(n) = 2T(n/2) + (n) T(n) = (n lg n)

    T(n) = 2T(n/2) + n T(n) = (n lg n)T(n) = 2T(n/2 )+ 17) + n ???

  • 7/29/2019 Merge Sorting explained

    15/27David Luebke 15 3/17/2013

    Solving Recurrences

    The substitution method (CLR 4.1)

    A.k.a. the making a good guess method

    Guess the form of the answer, then use induction

    to find the constants and show that solution works

    Examples:

    T(n) = 2T(n/2) + (n) T(n) = (n lg n)

    T(n) = 2T(n/2) + n T(n) = (n lg n)T(n) = 2T(n/2+ 17) + n(n lg n)

  • 7/29/2019 Merge Sorting explained

    16/27David Luebke 16 3/17/2013

    Solving Recurrences

    Another option is what the book calls the

    iteration method

    Expand the recurrence

    Work some algebra to express as a summation

    Evaluate the summation

    We will show several examples

  • 7/29/2019 Merge Sorting explained

    17/27David Luebke 17 3/17/2013

    s(n) =

    c + s(n-1)

    c + c + s(n-2)

    2c + s(n-2)

    2c + c + s(n-3)

    3c + s(n-3)

    kc + s(n-k) = ck + s(n-k)

    0)1(

    00)(

    nnsc

    nns

  • 7/29/2019 Merge Sorting explained

    18/27David Luebke 18 3/17/2013

    So far for n >= k we have

    s(n) = ck + s(n-k)

    What if k = n?

    s(n) = cn + s(0) = cn

    0)1(

    00)(

    nnsc

    nns

  • 7/29/2019 Merge Sorting explained

    19/27

    David Luebke 19 3/17/2013

    So far for n >= k we have

    s(n) = ck + s(n-k)

    What if k = n?

    s(n) = cn + s(0) = cn

    So

    Thus in general

    s(n) = cn

    0)1(

    00)(

    nnsc

    nns

    0)1(

    00)(

    nnsc

    nns

  • 7/29/2019 Merge Sorting explained

    20/27

    David Luebke 20 3/17/2013

    s(n)

    = n + s(n-1)

    = n + n-1 + s(n-2)

    = n + n-1 + n-2 + s(n-3)

    = n + n-1 + n-2 + n-3 + s(n-4)

    =

    = n + n-1 + n-2 + n-3 + + n-(k-1) + s(n-k)

    0)1(

    00)(

    nnsn

    nns

  • 7/29/2019 Merge Sorting explained

    21/27

    David Luebke 21 3/17/2013

    s(n)

    = n + s(n-1)

    = n + n-1 + s(n-2)

    = n + n-1 + n-2 + s(n-3)

    = n + n-1 + n-2 + n-3 + s(n-4)

    =

    = n + n-1 + n-2 + n-3 + + n-(k-1) + s(n-k)

    =

    0)1(

    00)(

    nnsn

    nns

    )(1

    knsi

    n

    kni

  • 7/29/2019 Merge Sorting explained

    22/27

    David Luebke 22 3/17/2013

    So far for n >= k we have

    0)1(

    00)(

    nnsn

    nns

    )(1

    knsi

    n

    kni

  • 7/29/2019 Merge Sorting explained

    23/27

    David Luebke 23 3/17/2013

    So far for n >= k we have

    What if k = n?

    0)1(

    00)(

    nnsn

    nns

    )(1

    knsi

    n

    kni

  • 7/29/2019 Merge Sorting explained

    24/27

    David Luebke 24 3/17/2013

    So far for n >= k we have

    What if k = n?

    0)1(

    00)(

    nnsn

    nns

    )(1

    knsi

    n

    kni

    2

    10)0(

    11

    nnisi

    n

    i

    n

    i

  • 7/29/2019 Merge Sorting explained

    25/27

    David Luebke 25 3/17/2013

    So far for n >= k we have

    What if k = n?

    Thus in general

    0)1(

    00)(

    nnsn

    nns

    )(1

    knsi

    n

    kni

    2

    10)0(

    11

    nnisi

    n

    i

    n

    i

    2

    1)(

    nnns

  • 7/29/2019 Merge Sorting explained

    26/27

    David Luebke 26 3/17/2013

    T(n) =

    2T(n/2) + c

    2(2T(n/2/2) + c) + c

    22T(n/22) + 2c + c

    22(2T(n/22/2) + c) + 3c

    23T(n/23) + 4c + 3c

    23T(n/23) + 7c

    23(2T(n/23/2) + c) + 7c24T(n/24) + 15c

    2kT(n/2k) + (2k- 1)c

    1

    22

    1

    )(nc

    nT

    nc

    nT

  • 7/29/2019 Merge Sorting explained

    27/27

    So far for n > 2k we have

    T(n) = 2kT(n/2k) + (2k- 1)c

    What if k = lg n?

    T(n) = 2lg n T(n/2lg n) + (2lg n - 1)c

    = n T(n/n) + (n - 1)c

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

    = nc + (n-1)c = (2n - 1)c

    1

    22

    1

    )(nc

    nT

    nc

    nT