Presentation is loading. Please wait.

Presentation is loading. Please wait.

308-203A Introduction to Computing II Lecture 8: Sorting 2 Fall Session 2000.

Similar presentations


Presentation on theme: "308-203A Introduction to Computing II Lecture 8: Sorting 2 Fall Session 2000."— Presentation transcript:

1 308-203A Introduction to Computing II Lecture 8: Sorting 2 Fall Session 2000

2 So far…. 1. Bubblesort - intuitive implementation  (n 2 ) suboptimal 2. MergeSort - Divide-and-Conquer O(n log n) worst-case optimal

3 The Problem with MergeSort We do a lot of copying when we MERGE… 8, 34, 51, 78, 82 2, 17, 64, 91, 123 2, 8, 17, 34, 51, 64, 78, 82, 91, 123 N/2 New Array: size = N

4 In Java, for example... int [] merge(int [] a, int [] b) { int [] c = new int [a.length + b.length]; // merge a and b into c …. return c; }

5 The Problem with MergeSort To merge we need O(n) extra space Copyingbigger “hidden constants” “Sorting-in-place” would be preferable (if we can do it in optimal n log n) Divide-and-Conquer was good, can we do the same thing with an operation other than merge??

6 Quicksort 64, 8, 78, 34, 82, 51, 17, 2, 91, 123 2. Recursion 2. Partition 1. Pick pivot 2, 8, 17, 34, 51, 64, 78, 82, 91, 123 8, 34, 51, 17, 2, 64, 78, 82, 91, 123

7 Quicksort Quicksort(int [] A, int start, int end) { int pivot = A[0]; int midpoint = Partition(pivot, A); Quicksort(A, start, midpoint); Quicksort(A, midpoint+1, end); }

8 Running Time Depends significantly on choice of pivot Worst-case = O(n 2 ) Best-case = O( n log n) Proofs on separate handout

9 The Worst-Case is WORSE! Worst-case is O(n 2 ) as bad as Bubblesort A clever trick:Fooling-the-Adversary 1. pick a random pivot 2. You hit a bad case only when very unlucky Average-case = O( n log n) Proof beyond the scope of this course

10 Randomized Quicksort Quicksort(int [] A, int start, int end) { int pivot = A[ randomInt(start, end) ]; int midpoint = partition(pivot, A); Quicksort(A, start, midpoint); Quicksort(A, midpoint+1, end); }

11 Any questions?


Download ppt "308-203A Introduction to Computing II Lecture 8: Sorting 2 Fall Session 2000."

Similar presentations


Ads by Google