Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC 213 – Large Scale Programming or. Today’s Goals  Begin by discussing basic approach of quick sort  Divide-and-conquer used, but how does this help?

Similar presentations


Presentation on theme: "CSC 213 – Large Scale Programming or. Today’s Goals  Begin by discussing basic approach of quick sort  Divide-and-conquer used, but how does this help?"— Presentation transcript:

1 CSC 213 – Large Scale Programming or

2 Today’s Goals  Begin by discussing basic approach of quick sort  Divide-and-conquer used, but how does this help?  Merge sort also divides-and-conquers, what differs?  Show execution tree & discuss meaning for quick sort  Consider selection and important of the pivot  Quick sort rocks for which pivots and why?  If we get really unlucky, when would quick sort suck?  How can we affect choice to insure we get lucky  Given all these facts: is quick sort worth the risk?

3 Quick (ungraded) Quiz  For what cases does quick sort suck?  When would quick sort execute fastest?  How does quick sort use divide-and-conquer?

4 Divide-and-Conquer  Like all recursive algorithms, need base case  Has immediate solution to a simple problem  Work is not easy and sorting 2+ items takes work  Already sorted 1 item since it cannot be out of order  Sorting a list with 0 items even easer  Recursive step simplifies problem & combines it  Begins by splitting data into two Sequence s  Combine sub Sequence s once they are sorted

5 Quick Sort  Divide: Partition by pivot  L has values <= p  G uses values >= p  Recur: Sort L and G  Conquer: Merge L, p, G p

6 Quick Sort  Divide: Partition by pivot  L has values <= p  G uses values >= p  Recur: Sort L and G  Conquer: Merge L, p, G p

7 Quick Sort  Divide: Partition by pivot  L has values <= p  G uses values >= p  Recur: Sort L and G  Conquer: Merge L, p, G p L G p

8 Quick Sort  Divide: Partition by pivot  L has values <= p  G uses values >= p  Recur: Sort L and G  Conquer: Merge L, p, G p p L G p

9 Quick Sort v. Merge Sort Quick SortMerge Sort  Work mostly splitting data  Cannot guarantee even split  Should skip some comparisons  Does not need extra space  Less work allocating arrays  Blindly merges all the data  Data already in sorted order!  Blindly splits data in half  Always gets even split  Needs * to use other arrays  Wastes time in allocation  Complex workaround exists  Work mostly in merge step  Combines two (sorted) halves  Always skips some comparisons

10 Execution Tree  Depicts divide-and-conquer execution  Recursive call represented by each oval node  Original Sequence shown at start  At the end of the oval, sorted Sequence shown  Initial call at root of the (binary) tree  Bottom of the tree has leaves for base cases

11 Execution Example pivot  Each call starts by selecting the pivot 

12 Execution Example pivot  Each call starts by selecting the pivot 

13 Execution Example pivot  Split into L & G partitions around pivot 

14 Execution Example pivot  Split into L & G partitions around pivot 

15 Execution Example  Recursively solve L partition first 

16 Execution Example  Recursively solve L partition first  

17 Execution Example pivot  Select new pivot and split into L & G partitions  

18 Execution Example  Recursively solve for L 1   

19 Execution Example  Recursively solve for L & enjoy base case 1  11   

20 Execution Example  Now solve for G partition and select pivot  3 41  11   

21 Execution Example  Recursively solve for L   11   

22 Execution Example  Recursively solve for L & enjoy base case   11   

23 Execution Example  Now solve for G & enjoy base case 4  44    11   

24 Execution Example pivot  Add L, pivot, & G to complete previous call   11     44  4

25 Execution Example pivot  Add L, pivot, & G to complete previous call   11     44  4

26 Execution Example  Recursively sort G from original call   11     44  4

27 Execution Example  Recursively sort G from original call   11     44   7 7 9

28 Execution Example pivot  Select pivot & partition into L & G   11     44   7 7 9

29 Execution Example  Solve L recursively via base case & move to G   11     44    7 9

30 Execution Example pivot  Select pivot & partition into L & G   11     44    7 9

31 Execution Example  Solve through two base cases in L & G 9  99    11     44    7 9

32 Execution Example pivot  Add L, pivot, & G to complete the call 9  99    11     44    7 9

33 Execution Example pivot  Add L, pivot, & G to complete the call 9  99    11     44    7 9

34 Execution Example pivot  Add L, pivot, & G to complete final call   99    11    44    7 9

35 Execution Example only as good as pivot choice  Sorts data, but only as good as pivot choice    11    44     99  9

36 Q UICK -S ORT ’ S Pivot  Can select any element as pivot existence  Pivot's existence required only, not where or what it is  Q UICK -S ORT ' S ideal pivot is median element  Equal-sized L & G when median element selected  Makes complexity equal to M ERGE -S ORT  Must sort data first to find the median, however  Smallest (or largest element) worst pivot  G (or L ) holds all elements & other partition empty  Complexity becomes equal to I NSERTION -S ORT

37 Simple Pivot Selection  Could use first (or last) element as pivot  It’s easy to code…  …but also makes sorted data the worst case…  …which is common so this is a really bad idea  Could choose random element as pivot  Little harder to code, but expected to work well  Best is median of first, mid, & last items in list  Nearly eliminates worst case, but much harder to code

38 For Next Lecture  Week #9 assignment posted so get working  Keep reviewing requirements for program #2  2 nd preliminary deadline coming up so get started  Time developing good tests saves coding time later  Reading on radix sort for Monday  Is it possible to sort without comparisons?  How is radix sort faster than O(n log n) lower bound?


Download ppt "CSC 213 – Large Scale Programming or. Today’s Goals  Begin by discussing basic approach of quick sort  Divide-and-conquer used, but how does this help?"

Similar presentations


Ads by Google