Presentation is loading. Please wait.

Presentation is loading. Please wait.

Design and Analysis of Algorithms Quicksort Haidong Xue Summer 2012, at GSU.

Similar presentations


Presentation on theme: "Design and Analysis of Algorithms Quicksort Haidong Xue Summer 2012, at GSU."— Presentation transcript:

1 Design and Analysis of Algorithms Quicksort Haidong Xue Summer 2012, at GSU

2 Review of insertion sort and merge sort Insertion sort – Algorithm – Worst case number of comparisons = O(?) Merge sort – Algorithm – Worst case number of comparisons = O(?)

3 Sorting Algorithms AlgorithmWorst TimeExpected TimeExtra Memory Insertion sortO(1) Merge sortO(n) Quick sortO(1) Heap sortO(1)

4 Quicksort Algorithm Input: A[1, …, n] Output: A[1,.., n], where A[1]<=A[2]…<=A[n] Quicksort: 1.if(n<=1) return; 2.Choose the pivot p = A[n] 3.Put all elements less than p on the left; put all elements lager than p on the right; put p at the middle. (Partition) 4. Quicksort(the array on the left of p) 5. Quicksort(the array on the right of p)

5 Quicksort Algorithm Quicksort example 28713 5 64 2 8 7 1 3 5 6 4 28 7 13 5 6 4 Current pivots Previous pivots Quicksort Hi, I am nothing Nothing Jr. Nothing 3rd 2 8 7 1 3 5 6 4 2 8 7 1 3 5 6 4 2 8 7 1 3 5 6 4

6 Quicksort Algorithm More detail about partition Input: A[1, …, n] (p=A[n]) Output: A[1,…k-1, k, k+1, … n], where A[1, …, k-1] A[k], A[k]=p Partition: 1.t = the tail of smaller array 2.from i= 1 to n-1{ if(A[i]<p) { exchange A[t+1] with A[i]; update t to the new tail; } 3.exchange A[t+1] with A[n];

7 Quicksort Algorithm Partition example 28713 5 64 28713 5 64 28713 5 64 tail 28713 5 64 Exchange 2 with A[tail+1] Do nothing

8 Quicksort Algorithm Partition example 28713 5 64 2 8 713 5 64 2 8 71 3 5 64 tail Exchange 1 with A[tail+1] tail Exchange 3 with A[tail+1] Do nothing 2 8 7 1 3 5 64 tail Do nothing 2 8 7 1 3 5 6 4 Final step: exchange A[n] with A[tail+1]

9 Quicksort Algorithm The final version of quick sort: Quicksort(A, p, r){ if(p<r){ //if(n<=1) return; q = partition(A, p, r); //small ones on left; //lager ones on right Quicksort(A, p, q-1); Quicksort(A, q+1, r); }

10 Analysis of Quicksort Time complexity – Worst case – Expected Space complexity - extra memory – 0 = O(1)

11 Analysis of Quicksort

12 Strict proof of the worst case time complexity

13

14 Strict proof of the expected time complexity

15 Java implementation of Quicksort Professional programmers DO NOT implement sorting algorithms by themselves We do it for practicing algorithm implementation techniques and understanding those algorithms Code quicksort – Sort.java // the abstract class – Quicksort_Haydon.java // my quicksort implementation – SortingTester.java // correctness tester


Download ppt "Design and Analysis of Algorithms Quicksort Haidong Xue Summer 2012, at GSU."

Similar presentations


Ads by Google