Sorting Algorithms: Probabilistic Analysis Computer Algorithms Design and Analysis Outline

Sorting Algorithms: Probabilistic Analysis Computer Algorithms Design and Analysis Outline

Tutorial 2 Sorting Algorithms: Probabilistic Analysis Computer Algorithms Design and Analysis Outline Bubble Sort Quick Sort Counting Sort Comparison of sorting algorithms 1. Bubble Sort Computer Algorithms Design and Analysis Theorem: The average number of comparisons done by bubble sort is θ(n2) Proof by inversion Facts Each comparison remove at least one inversion All the inversions must be eliminated during the process of sorting Computer Algorithms Design and Analysis (1) Ω(n2) Assume n numbers, 1,2,…,n For k (1≤k ≤n), consider the expected number of inversions of k 1(nn−1) [](1)(2)...10nn−+ − +++= K=n, expected inversions ≥ nn2 1(nn−1)(− 2) ≥ [](2)...100n −++++= K=n-1, expected inversions nn2 ii(1)− K=i, expected inversions ≥ 2n n ii(1)− The expected number of inversions ≥ ∑ i=1 2n 2 Which is Ω(n ) (2) O(n2) – easy to proof According to (1)(2), the average number of comparisons is θ(n2). Computer Algorithms Design and Analysis A more simple solution Computing the average number of inversions in inputs of size n (n>1): For any i, j, (1≤j≤i≤n), either (xi,xj ) or (xj ,xi) is an inversion, thus the probability of inversion is 1/2. The number of transpose pairs (xi,xj ) on n distinct integers is n(n-1)/2. So, the average number of inversions in all possible inputs is n(n-1)/4. The average behavior of any sorting algorithm that remove at most one inversion per key comparison must in Ω(n2) 2. Quick Sort Computer Algorithms Design and Analysis Quicksort: the Strategy Dividing the array to be sorted into two parts: “small” and “large”, which will be sorted recursively. [splitPoint]: pivot [first] [last] for any element in this for any element in this small large segment, the key is not segment, the key is less less than pivot. than pivot. To be sorted recursively Computer Algorithms Design and Analysis QuickSort: the algorithm Input: Array E and indexes first, and last, such that elements E[i] are defined for first≤i≤last. Output: E[first],…,E[last] is a sorted rearrangement of the same elements. TheThe splitting splitting point point is is The procedure: chosenchosen arbitrarily, arbitrarily, as as void quickSort(Element[ ] E, int first, int last) thethe first first element element in in the the if (first<last) arrayarray segment segment here. here. Element pivotElement=E[first]; Key pivot=pivotElement.key; int splitPoint=partition(E, pivot, first, last); E[splitPoint]=pivotElement; quickSort(E, first, splitPoint-1); quickSort(E, splitPoint+1, last); return Computer Algorithms Design and Analysis How to select pivot? Fixed strategy Random strategy Computer Algorithms Design and Analysis The fixed strategy (divide and conquer) Input: A, n Divide Select a item from a fixed position Partition: q, n-q-1 Conquer: QuickSort(A,first,q-1) QuickSort(A,q+1,last) Combine T(n)=T(q)+T(n-q-1)+Θ(n) Computer Algorithms Design and Analysis The fixed strategy Worst case Partition: 0, n-1 Input is sorted or inverse sorted T(n)= T(0)+T(n-1)+Θ(n)=T(n-1)+Θ(n) 2 T(n) ∈Θ(n ) Best Case Partition: n/2, n/2 T(n)= 2T(n/2)+Θ(n) T(n) ∈ Θ(nlgn) Computer Algorithms Design and Analysis Average case? Θ(nlgn) What about partition: n/5, 4n/5? T(n)= T(n/5)+T(4n/5)+Θ(n) Use the recursion tree for analysis, we have T(n)∈Θ(nlgn) What about partition: 0.001n, 0.999n? Θ(nlgn) What about partition: n/k, ((k-1)n)/k? Θ(nlgn) Computer Algorithms Design and Analysis Randomized Strategy Randomized QuickSort Input: Array E and indexes first, and last, such that elements E[i] are defined for first≤i≤last. Output: E[first],…,E[last] is a sorted rearrangement of the same elements. The procedure: void Random_quickSort(Element[ ] E, int first, int last) if (first<last) Element pivotElement=E[Random(first,last)]; Key pivot=pivotElement.key; int splitPoint=partition(E, pivot, first, last); E[splitPoint]=pivotElement; Random_quickSort(E, first, splitPoint-1); Random_quickSort(E, splitPoint+1, last); return Computer Algorithms Design and Analysis What is the expected number of comparisons? Input A, n Elements of A can be denoted as z1,z2,…, zn (z1<z2<…<zn) (assume distinct) Let random variables ⎧1 if zij is compared to z X ij = ⎨ ⎩0 else nn−1 The total comparison XX= ∑∑ ij iji==+11 The expectation of X? ⎡⎤nn−−11 nn nn − 1 EX[] === E⎢⎥∑∑ Xij ∑∑[ Xij ] ∑∑ Pr{zi is compared to zj } ⎣⎦iji==+11 iji ==+ 11 iji ==+ 11 Computer Algorithms Design and Analysis Pr{zi is compared to zj }= ? When two items are compared? For example A={1,3,2,5,4,6}, if pivot=4, then A is separated into L={1,2,3}, R={5,6} 4 is compared to all elements in L and R Elements in L is never compared to elements in R Depends on the chosen of pivot Consider Zij={zi,zi+1,…,zj} If zx (i<x<j) is chosen as a pivot first, then zi and zj will not be compared So, zi is compared to zj if and only if zi (or zj) is chosen as a pivot before any other item in Zij As probability of each item is chosen in Zij is equal Pr{zzii is compared to zji }= Pr{ is first pivot chosen from Zj } 2 +=Pr{z is first pivot chosen from Z } j ij ji−+1 Computer Algorithms Design and Analysis nn−1 EX[ ]= ∑∑ Pr{zi is compared to zj } iji==+11 nn−1 2 = ∑∑ iji==+11ji−+1 nni−−1 2 = ∑∑ ik==11k +1 nn−1 2 < ∑∑ ik==11k n−1 ≈+2∑ (ln(n )γ ) (Harmonic Series, book P22, equation 1.11) i=1 =O(nlgn) So the expected running time of randomized QuickSort is O(nlgn) 3. Counting Sort Computer Algorithms Design and Analysis Algorithm Description [CLRS P168] Computer Algorithms Design and Analysis Analysis on Counting Sort Running time: Θ(n+k) Extra Space: k K maybe large, for integers in 32-bit machine, k=232-1 It is efficient when k=θ(n) Computer Algorithms Design and Analysis Comparison of sorting algorithms Algorithm Best Case Worst Case Average Space Stable usage (Ex.P216 4.51) Insertion nn2/2 Θ(n2) In place Yes Sort Quick Sort nlgn n2/2 Θ(nlgn) lgn No Mergesort nlgn/2 nlgn Θ(nlgn) n Yes Heapsort 2nlgn / 2nlgn / Θ(nlgn) In place No nlgn(Accel.) nlgn(Accel.) Selection n2/2 n2/2 Θ(n2) In place No Sort Bubble Sort n n2/2 Θ(n2) In place Yes Shell Sort _ _ _ In place No Count Sort n+k n+k Θ(n+k) k Yes.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    21 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us