Download presentation
Presentation is loading. Please wait.
Published byGervais Walton Modified over 9 years ago
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
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.