1 / 15

Design and Analysis of Algorithms Quicksort

Design and Analysis of Algorithms Quicksort. Haidong Xue Summer 2012, at GSU. 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(?). Sorting Algorithms. Quicksort Algorithm.

monifa
Télécharger la présentation

Design and Analysis of Algorithms Quicksort

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Design and Analysis of AlgorithmsQuicksort HaidongXue 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

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

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

  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] and A[k+1, … n] > A[k], A[k]=p • Partition: • t = the tail of smaller array • from i= 1 to n-1{ if(A[i]<p) { exchange A[t+1] with A[i]; update t to the new tail; } • exchange A[t+1] with A[n];

  7. Quicksort Algorithm • Partition example 2 8 7 1 3 5 6 4 2 8 7 1 3 Exchange 2 with A[tail+1] 5 6 4 tail tail tail tail 2 8 7 1 3 Do nothing 5 6 4 2 8 7 1 3 5 6 4 Do nothing

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

  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 Worst case • The most unbalanced one --- • Is it the worst case? • Strict proof Expected time complexity • Strict proof

  12. Strict proof of the worst case time complexity Proof that • When n=1, (1)= • Hypothesis: when induction statement: when

  13. Strict proof of the worst case time complexity Since , +

  14. Strict proof of the expected time complexity • Given A[1, …, n], after sorting them to , the chance for 2 elements, A[i] and A[j], to be compared is . • The total comparison is calculated as:

  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

More Related