merge sort
play

Merge Sort Carola Wenk Slides courtesy of Charles Leiserson with - PowerPoint PPT Presentation

CS 3343 Fall 2010 Merge Sort Carola Wenk Slides courtesy of Charles Leiserson with small Slides courtesy of Charles Leiserson with small changes by Carola Wenk 9/9/10 CS 3343 Analysis of Algorithms 1 Merge sort Merge sort M ERGE -S ORT


  1. CS 3343 – Fall 2010 Merge Sort Carola Wenk Slides courtesy of Charles Leiserson with small Slides courtesy of Charles Leiserson with small changes by Carola Wenk 9/9/10 CS 3343 Analysis of Algorithms 1

  2. Merge sort Merge sort M ERGE -S ORT ( A [1 . . n ]) 1. If n = 1, done. 2. M ERGE -S ORT ( A [ 1 . .  n /2  ]) 3. M ERGE -S ORT ( A [  n /2  +1 . . n ]) ( [ ]) 4. “ Merge ” the 2 sorted lists. Key subroutine: M ERGE 9/9/10 CS 3343 Analysis of Algorithms 2

  3. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 13 11 7 9 2 1 9/9/10 CS 3343 Analysis of Algorithms 3

  4. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 13 11 7 9 2 1 1 9/9/10 CS 3343 Analysis of Algorithms 4

  5. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 13 11 13 11 7 9 7 9 2 1 2 1 9/9/10 CS 3343 Analysis of Algorithms 5

  6. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 13 11 13 11 7 9 7 9 2 1 2 1 2 9/9/10 CS 3343 Analysis of Algorithms 6

  7. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 7 9 7 9 7 9 2 1 2 1 2 9/9/10 CS 3343 Analysis of Algorithms 7

  8. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 7 9 7 9 7 9 2 1 2 1 2 7 9/9/10 CS 3343 Analysis of Algorithms 8

  9. Merging two sorted arrays Merging two sorted arrays 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7 9/9/10 CS 3343 Analysis of Algorithms 9

  10. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7 9 9/9/10 CS 3343 Analysis of Algorithms 10

  11. Merging two sorted arrays Merging two sorted arrays 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7 9 9/9/10 CS 3343 Analysis of Algorithms 11

  12. Merging two sorted arrays Merging two sorted arrays 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 13 11 13 11 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11 9/9/10 CS 3343 Analysis of Algorithms 12

  13. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 13 11 13 11 13 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11 9/9/10 CS 3343 Analysis of Algorithms 13

  14. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 13 11 13 11 13 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11 12 9/9/10 CS 3343 Analysis of Algorithms 14

  15. Merging two sorted arrays Merging two sorted arrays 20 12 20 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 20 20 12 12 13 11 13 11 13 11 13 11 13 11 13 7 9 7 9 7 9 9 2 1 2 1 2 7 9 11 12 Time dn ∈ Θ ( n ) to merge a total of n elements (linear time) of n elements (linear time). 9/9/10 CS 3343 Analysis of Algorithms 15

  16. Analyzing merge sort Analyzing merge sort T ( n ) M ERGE -S ORT ( A [1 . . n ]) 1. If n = 1, done. d 0 T ( n /2) 2. M ERGE -S ORT ( A [ 1 . .  n /2  ]) T ( n /2) 3. M ERGE -S ORT ( A [  n /2  +1 . . n ]) dn 4. “ Merge ” the 2 sorted lists. Sloppiness: Should be T (  n /2  ) + T (  n /2  ) , but it turns out not to matter asymptotically. 9/9/10 CS 3343 Analysis of Algorithms 16

  17. Recurrence for merge sort Recurrence for merge sort d if n = 1; d 0 if n 1; T ( n ) = 2 T ( n /2) + dn if n > 1. • But what does T ( n ) solve to? I.e., is it O(n) or O(n 2 ) or O(n 3 ) or …? ( ) ( ) ( ) 9/9/10 CS 3343 Analysis of Algorithms 17

  18. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. 9/9/10 CS 3343 Analysis of Algorithms 18

  19. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. T ( n ) 9/9/10 CS 3343 Analysis of Algorithms 19

  20. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn T ( n /2) T ( n /2) 9/9/10 CS 3343 Analysis of Algorithms 20

  21. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn /2 dn /2 T ( n /4) T ( /4) T ( /4) T ( n /4) T ( /4) T ( n /4) T ( /4) T ( n /4) 9/9/10 CS 3343 Analysis of Algorithms 21

  22. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn /2 dn /2 dn /4 d /4 d /4 dn /4 d /4 dn /4 d /4 dn /4 d 0 9/9/10 CS 3343 Analysis of Algorithms 22

  23. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn /2 dn /2 h = log n dn /4 h = log n d /4 dn /4 d /4 dn /4 d /4 d /4 dn /4 d 0 9/9/10 CS 3343 Analysis of Algorithms 23

  24. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn dn /2 dn /2 h = log n h = log n dn /4 d /4 dn /4 d /4 dn /4 d /4 d /4 dn /4 d 0 9/9/10 CS 3343 Analysis of Algorithms 24

  25. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn dn /2 dn dn /2 h = log n h = log n d /4 dn /4 d /4 dn /4 d /4 dn /4 d /4 dn /4 d 0 9/9/10 CS 3343 Analysis of Algorithms 25

  26. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn dn /2 dn dn /2 h = log n h = log n d /4 dn /4 d /4 dn /4 d dn d /4 dn /4 dn /4 d /4 … … d 0 9/9/10 CS 3343 Analysis of Algorithms 26

  27. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn dn /2 dn dn /2 h = log n h = log n dn /4 d /4 d /4 dn /4 dn d dn /4 d /4 dn /4 d /4 … … d 0 #leaves = n d 0 n 9/9/10 CS 3343 Analysis of Algorithms 27

  28. Recursion tree Recursion tree Solve T ( n ) = 2 T ( n /2) + dn , where d > 0 is constant. Solve T ( n ) 2 T ( n /2) dn , where d 0 is constant. dn dn dn /2 dn dn /2 h = log n h = log n d /4 dn /4 d /4 dn /4 d dn dn /4 d /4 dn /4 d /4 … … d 0 #leaves = n d 0 n Total dn log n + d 0 n 9/9/10 CS 3343 Analysis of Algorithms 28

  29. Conclusions Conclusions • Merge sort runs in Θ ( n log n ) time. i Θ ( l M ) i • Θ ( n log n ) grows more slowly than Θ ( n 2 ). • Therefore, merge sort asymptotically beats insertion sort in the worst case. • In practice, merge sort beats insertion sort for n > 30 or so. (Why not earlier?) ( y ) 9/9/10 CS 3343 Analysis of Algorithms 29

  30. Recursion-tree method Recursion-tree method • A recursion tree models the costs (time) of a • A recursion tree models the costs (time) of a recursive execution of an algorithm. • The recursion tree method can be unreliable • The recursion-tree method can be unreliable, just like any method that uses ellipses (…). • It is good for generating guesses of what the • It is good for generating guesses of what the runtime could be. But: Need to verify that the guess is right. → Induction (substitution method) ( ) 9/9/10 CS 3343 Analysis of Algorithms 30

  31. Substitution method Substitution method The most general method to solve a recurrence The most general method to solve a recurrence (prove O and Ω separately): 1. Guess the form of the solution: (e.g. using recursion trees, or expansion) 2. Verify by induction (inductive step). 3. Solve for O-constants n 0 and c (base case of induction) 9/9/10 CS 3343 Analysis of Algorithms 31

Recommend


More recommend