CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms...
Transcript of CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms...
![Page 1: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/1.jpg)
1
CS2351Data Structures
Lecture 5: Sorting in Linear Time
![Page 2: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/2.jpg)
2
•Sorting algorithms we studied so far–Insertion, Selection, Merge, Quicksort determine sorted order by comparison
•We will look at 3 new sorting algorithms–Counting Sort, Radix Sort, Bucket Sort assume some properties on the input, and
determine the sorted order by distribution
About this lecture
![Page 3: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/3.jpg)
3
Helping the Billionaire
•Your boss, Bill, is a billionaire•Inside his BIG wallet, there
are a lot of bills, say, n bills•Nine kinds of bills:
$1, $5, $10, $20, $50,$100, $200, $500, $1000
![Page 4: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/4.jpg)
4
Helping the Billionaire
•He did not care about theordering of the bills before
•But then, he has taken theAlgorithm course, and learntthat if things are sorted, wecan search faster
The horoscope says I should useonly $500 notes today … Do I
have enough in the wallet?
![Page 5: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/5.jpg)
5
A Proposal
500
1 5 10 20
100 200
50
1000
•Create a bin for each kind of bill•Look at his bill one by one, and place the
bill in the corresponding bin•Finally, collect bills in each bin, starting
from $1-bin, $5-bin, …, to $1000-bin
![Page 6: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/6.jpg)
6
A Proposal
•In the previous algorithm, there is nocomparison between the items …•But we can still sort correctly…WHY?
•Each step looks at the value of an item,and distribute the item to the correct bin•So, in the end, when a bill is collected,
its value must be larger than or equal toall bills collected before sorted
![Page 7: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/7.jpg)
7
Sorting by Distribution
•Previous algorithm sorts the bills basedon distribution operations
•It works because:•we have information about the values of
the input items we can create bins
•We will look at more algorithms which arebased on the same distribution idea
![Page 8: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/8.jpg)
8
Counting Sort
![Page 9: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/9.jpg)
9
extra infoon values
Counting Sort
•Input: Array A[1..n] of n integers,each has value from [0,k]
•Output: Sorted array of the n integers•Idea 1: Create B[1..n] to store the output•Idea 2: Process A[1..n] from right to left
•Use k + 2 counters:•One for “which element to process”•k + 1 for “where to place”
![Page 10: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/10.jpg)
10
Counting Sort (Details)Before Running
2 1 2 5 3 3 1 2A
B
next elementc[0], c[1], c[2],c[3], c[4], c[5]
k+1 counters
![Page 11: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/11.jpg)
11
Counting Sort (Details)Step 1: Set c[j] = location in B for placing the
next element if it has value j
2 1 2 5 3 3 1 2A
B
next element
c[1] = 2
c[2] = 5 c[5] = 8
c[3] = 7c[0] = 0 c[4] = 7
![Page 12: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/12.jpg)
12
Counting Sort (Details)Step 2: Process next element of A and
update corresponding counter
2 1 2 5 3 3 1 2A
2B
next element
c[1] = 2
c[2] = 4 c[5] = 8
c[0] = 0 c[4] = 7c[3] = 7
![Page 13: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/13.jpg)
13
Counting Sort (Details)
2 1 2 5 3 3 1 2A
1 2B
Step 2: Process next element of A andupdate corresponding counter
c[2] = 4 c[5] = 8
c[1] = 1
next element
c[0] = 0 c[4] = 7c[3] = 7
![Page 14: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/14.jpg)
14
Counting Sort (Details)
2 1 2 5 3 3 1 2A
1 2 3B
Step 2: Process next element of A andupdate corresponding counter
c[2] = 4 c[5] = 8
c[4] = 7c[1] = 1 c[3] = 6
next element
c[0] = 0
![Page 15: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/15.jpg)
15
Counting Sort (Details)
2 1 2 5 3 3 1 2A
1 2 3 3B
Step 2: Process next element of A andupdate corresponding counter
c[2] = 4 c[5] = 8
c[1] = 1 c[3] = 5
next element
c[0] = 0 c[4] = 7
![Page 16: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/16.jpg)
16
Counting Sort (Details)
2 1 2 5 3 3 1 2A
1 2 3 3 5B
Step 2: Process next element of A andupdate corresponding counter
c[2] = 4 c[5] = 7
c[1] = 1 c[3] = 5
next element
c[0] = 0 c[4] = 7
![Page 17: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/17.jpg)
17
Counting Sort (Details)
2 1 2 5 3 3 1 2A
1 2 2 3 3 5B
Step 2: Process next element of A andupdate corresponding counter
c[2] = 3 c[5] = 7
c[1] = 1 c[3] = 5
next element
c[0] = 0 c[4] = 7
![Page 18: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/18.jpg)
18
Counting Sort (Details)
2 1 2 5 3 3 1 2A
1 1 2 2 3 3 5B
Step 2: Process next element of A andupdate corresponding counter
c[2] = 3 c[5] = 7
c[1] = 0 c[3] = 5
next element
c[0] = 0 c[4] = 7
![Page 19: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/19.jpg)
19
Counting Sort (Details)
2 1 2 5 3 3 1 2A
1 1 2 2 2 3 3 5B
Step 2: Done when all elements of A are processed
c[2] = 3 c[5] = 7
c[3] = 5
next element
c[1] = 0c[0] = 0 c[4] = 7
![Page 20: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/20.jpg)
20
Counting Sort (Step 1)How can we perform Step 1 smartly?
1. Initialize c[0], c[1], …, c[k] to 0
2. /* First, set c[j] = # elements with value j */
For x = 1,2,…,n, increase c[A[x]] by 1
3. /* Set c[j] = location in B to place next elementwhose value is j (iteratively) */
For y = 1,2,…,k, c[y] = c[y-1] + c[y]
Time for Step 1 = ( n + k )
![Page 21: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/21.jpg)
21
Counting Sort (Step 2)How can we perform Step 2 ?
/* Process A from right to left */
For x = n, n-1,…,2, 1{ /* Process next element */
B[c[A[x]]] = A[x];/* Update counter */
Decrease c[A[x]] by 1;}
Time for Step 2 = ( n )
![Page 22: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/22.jpg)
22
Counting Sort (Running Time)
Conclusion:•Running time = ( n + k ) if k = ( n ), time is (asymptotically) optimal
•Counting sort is also stable :• elements with same value appear in same
order in before and after sorting
![Page 23: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/23.jpg)
23
Stable Sort
2 1 2 5 3 3 1 2BeforeSorting
1 1 2 2 2 3 3 5
AfterSorting
![Page 24: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/24.jpg)
24
Radix Sort
![Page 25: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/25.jpg)
25
extra infoon values
Radix Sort
•Input: Array A[1..n] of n integers,each has d digits, andeach digit has value from [0,k]
•Output: Sorted array of the n integers•Idea: Sort in d rounds
•At Round j, stable sort A on digit j(where rightmost digit = digit 1)
![Page 26: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/26.jpg)
26
Radix Sort (Example Run)
1 9 0 4
Before Running
2 5 7 91 8 7 46 3 5 54 4 3 28 3 1 81 3 0 4
4 digits
![Page 27: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/27.jpg)
27
Radix Sort (Example Run)
1 9 0 4
Round 1: Stable sort digit 1
2 5 7 91 8 7 46 3 5 54 4 3 28 3 1 81 3 0 4
4 4 3 21 9 0 41 8 7 41 3 0 46 3 5 58 3 1 82 5 7 9
![Page 28: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/28.jpg)
28
Radix Sort (Example Run)Round 2: Stable sort digit 2
1 9 0 41 3 0 48 3 1 84 4 3 26 3 5 51 8 7 42 5 7 9
4 4 3 21 9 0 41 8 7 41 3 0 4
6 3 5 58 3 1 82 5 7 9
After Round 2, last 2 digitsare sorted (why?)
![Page 29: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/29.jpg)
29
Radix Sort (Example Run)Round 3: Stable sort digit 3
1 3 0 48 3 1 86 3 5 54 4 3 22 5 7 91 8 7 41 9 0 4
1 9 0 41 3 0 48 3 1 84 4 3 26 3 5 51 8 7 42 5 7 9
After Round 3, last 3 digitsare sorted (why?)
![Page 30: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/30.jpg)
30
Radix Sort (Example Run)Round 4: Stable sort digit 4
1 3 0 41 8 7 41 9 0 42 5 7 94 4 3 26 3 5 58 3 1 8
1 3 0 48 3 1 86 3 5 54 4 3 22 5 7 91 8 7 41 9 0 4
After Round 4, last 4 digitsare sorted (why?)
![Page 31: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/31.jpg)
31
Radix Sort (Example Run)Done when all digits are processed
1 3 0 41 8 7 41 9 0 42 5 7 94 4 3 26 3 5 58 3 1 8
The array is sorted (why?)
![Page 32: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/32.jpg)
32
Radix Sort (Correctness)
Question:“After r rounds, last r digits are sorted”Why ??
Answer:This can be proved by induction :The statement is true for r = 1Assume the statement is true for r = kThen …
![Page 33: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/33.jpg)
33
Radix Sort (Correctness)
At Round k+1,• if two numbers differ in digit “k+1”, their
relative order [based on last k+1 digits] will becorrect after sorting digit “k+1”
• if two numbers match in digit “k+1”, theirrelative order [based on last k+1 digits] will becorrect after stable sorting digit “k+1”(why?)
Last “k+1”digits sorted after Round “k+1”
![Page 34: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/34.jpg)
34
Radix Sort (Summary)
Conclusion:•After d rounds, last d digits are sorted,
so that the numbers in A[1..n] are sorted
•There are d rounds of stable sort, eachcan be done in ( n + k ) time
Running time = ( d (n + k) )• if d=(1) and k=(n), asymptotically optimal
![Page 35: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/35.jpg)
35
Bucket Sort
![Page 36: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/36.jpg)
36
extra infoon values
Bucket Sort
•Input: Array A[1..n] of n elements,each is drawn uniformly atrandom from the interval [0,1)
•Output: Sorted array of the n elements•Idea:
Distribute elements into n buckets, sothat each bucket is likely to have fewerelements easier to sort
![Page 37: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/37.jpg)
37
Bucket Sort (Details)
0.78, 0.17, 0.39, 0.26, 0.72,0.94, 0.21, 0.12, 0.23, 0.68
BeforeRunning
Step 1:Create nbuckets
n = #buckets= #elements
[0,0.1) [0.1,0.2) [0.2,0.3) [0.3,0.4) [0.4,0.5)
[0.5,0.6) [0.6,0.7) [0.7,0.8) [0.8,0.9) [0.9,1)
each bucket represents asubinterval of size 1/n
![Page 38: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/38.jpg)
38
Bucket Sort (Details)Step 2: Distribute each element to correct bucket
[0,0.1) [0.1,0.2) [0.2,0.3) [0.3,0.4) [0.4,0.5)
[0.5,0.6) [0.6,0.7) [0.7,0.8) [0.8,0.9) [0.9,1)
If Bucket j represents subinterval [ j/n, (j+1)/n ),element with value x should be in Bucket bxnc
0.170.12
0.260.21
0.230.39
0.680.78
0.72 0.94
![Page 39: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/39.jpg)
39
Bucket Sort (Details)Step 3: Sort each bucket (by insertion sort)
[0,0.1) [0.1,0.2) [0.2,0.3) [0.3,0.4) [0.4,0.5)
[0.5,0.6) [0.6,0.7) [0.7,0.8) [0.8,0.9) [0.9,1)
0.120.17
0.210.230.26
0.39
0.680.720.78 0.94
![Page 40: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/40.jpg)
40
Bucket Sort (Details)Step 4: Collect elements from Bucket 0 to Bucket n-1
[0,0.1) [0.1,0.2) [0.2,0.3) [0.3,0.4) [0.4,0.5)
[0.5,0.6) [0.6,0.7) [0.7,0.8) [0.8,0.9) [0.9,1)
0.120.17
0.210.230.26
0.39
0.680.720.78 0.94
0.12, 0.17, 0.21, 0.23, 0.26,0.39, 0.68, 0.72, 0.78, 0.94
SortedOutput
![Page 41: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/41.jpg)
41
Bucket Sort (Running Time)•Let X = # comparisons in all insertion sort
Running time = ( n + X )
worst-case running time = ( n2 )
varies on input
Finding average of X (i.e. #comparisons)gives average running time
•How about average running time?
![Page 42: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/42.jpg)
42
Average Running TimeLet nj = # elements in Bucket j
X · c( n02 + n1
2 + …+ nn-12 )
varies on input
So, E[X] · E[c(n02 + n1
2 + …+ nn-12)]
= c E[n02 + n1
2 + …+ nn-12]
= c (E[n02] + E[n1
2] + …+ E[nn-12])
= cn E[n02] (by symmetry)
![Page 43: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/43.jpg)
43
Average Running TimeTextbook (new one: p. 202—203,
old one: p. 175—176) shows thatE[n0
2] = 2 –(1/n)
E[X] · cn E[n02] = 2cn –c
In other words, E[X] = ( n )
Average running time = ( n )
![Page 44: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/44.jpg)
44
For Interested ClassmatesThe following is how we can show
E[n02] = 2 –(1/n)
Recall that n0 = # elements in Bucket 0So, suppose we set
Yk = 1 if element k is in Bucket 0Yk = 0 if element k not in Bucket 0
Then, n0 = Y1 + Y2 + …+ Yn
![Page 45: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/45.jpg)
45
For Interested ClassmatesThen,
E[n02] = E[(Y1 + Y2 + …+ Yn)2]
= E[ Y12 + Y2
2 + …+ Yn2
+ Y1Y2 + Y1Y3 + …+ Y1Yn
+ Y2Y1 + Y2Y3 + …+ Y2Yn
+ …+ YnY1 + YnY2 + …+ YnYn-1 ]
![Page 46: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/46.jpg)
46
= E[Y12] + E[Y2
2] + …+ E[Yn2]
+ E[Y1Y2] + …+ E[YnYn-1 ]= n E[Y1
2] + n(n-1) E[Y1Y2](by symmetry)
The value of Y12 is either 1 (when Y1 = 1),
or 0 (when Y1 = 0)The first case happens with 1/n chance
(when element 1 is in Bucket 0), soE[Y1
2] = 1/n * 1 + (1- 1/n) * 0 = 1/n
![Page 47: CS2351 Data Structureswkhon/ds/ds11/lecture/lecture5.pdf · 2010-03-22 · 2 •Sorting algorithms we studied so far –Insertion, Selection, Merge, Quicksort determine sorted order](https://reader033.fdocuments.net/reader033/viewer/2022041709/5e46ef4cb8f95e1ca149731b/html5/thumbnails/47.jpg)
47
For Y1Y2, it is either 1 (when Y1=1 and Y2=1),or 0 (otherwise)
The first case happens with 1/n2 chance(when both element 1 and element 2 are inBucket 0), soE[Y1Y2] = 1/n2 * 1 + (1- 1/n2) * 0 = 1/n2
Thus, E[n02] = n E[Y1
2] + n(n-1) E[Y1Y2]= n (1/n) + n(n-1) (1/n2)= 2 –1/n