The document discusses the bucket sort algorithm. Bucket sort works by distributing elements into buckets based on their range and then sorting the elements within each bucket. It has average case time complexity of O(n) when the number of buckets k is Θ(n). The document provides pseudocode for bucket sort and analyzes its worst case and average case time complexities. It also discusses potential improvements like using a more efficient sorting algorithm within each bucket.
6. Assumption
input generated by a random process that distributes elements uniformly
and independently over the interval [0,1)
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 6 / 26
8. Procedure
we divide the interval [0,1) into n equally sized sub-intervals, called
buckets or bins
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 8 / 26
9. Procedure
we divide the interval [0,1) into n equally sized sub-intervals, called
buckets or bins
as input is uniformly distributed, we do not expect many numbers to fall
into each bucket
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 9 / 26
10. Procedure
we divide the interval [0,1) into n equally sized sub-intervals, called
buckets or bins
sort each bucket and combine in order
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 10 / 26
13. Correctness
numbers in bucket B[i] are less than numbers in bucket B[j], given
i < j
numbers inside each bucket are sorted
in-order concatenation will produce sorted output
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 13 / 26
14. Correctness
numbers in bucket B[i] are less than numbers in bucket B[j], given
i < j
numbers inside each bucket are sorted
concatenation will produce sorted output
one may also think of induction
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 14 / 26
16. Running Time Analysis
T(n) = O(n + k) +
k−1
i=0
O(n2
i )
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 16 / 26
17. Running Time Analysis
Worst case will be when all numbers would be in one bucket, giving O(n2)
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 17 / 26
18. Running Time Analysis (Average Case)
E[T(n)] =E[O(n + k) +
k−1
i=0
O(n2
i )]
=O(n + k) +
k−1
i=0
E[O(n2
i )]
=O(n + k) +
k−1
i=0
O(E[n2
i ])
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 18 / 26
19. Running Time Analysis (Average Case)
we substitute,
ni =
n
j=1
Xij
where each Xij , could be either 0 or 1. So our equations now become,
E[T(n)] =O(n + k) +
k−1
i=0
O(E[
n
j=1
Xij
n
k=1
Xik])
=O(n + k) +
k−1
i=0
O(E[
n
j=1
X2
ij ] + E[
1≤j,k≤n j=k
Xij Xik])
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 19 / 26
20. Running Time Analysis (Average Case)
we can see that,
P(Xij = 1) =
1
k
and Xij and Xik are independent for j = k.
E[X2
ij ] =
1
k
E[Xij Xik] =
1
k2
(i = j)
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 20 / 26
21. Running Time Analysis (Average Case)
E[T(n)] =O(n + k) +
k−1
i=0
O(E[
n
j=1
X2
ij ] + E[
1≤j,k≤n j=k
Xij Xik])
=O(n + k) +
k−1
i=0
O(n ×
1
k
+ n × (n − 1) ×
1
k2
)
=O(n + k) + O(n +
n2
k
)
=O(n + k +
n2
k
)
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 21 / 26
22. Running Time Analysis (Average Case)
if we assume, c1n ≤ k ≤ c2n, where c1, c2 >= 0, (that is k is Θ(n)), then
we can see that complexity becomes O(n).
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 22 / 26
23. Space Analysis
O(n + k)
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 23 / 26
24. What we can do next?
we could try and analyze merge sort subroutines (or some other sort)
we can use a efficient pre-computed meta-computing heuristic to
significantly improve performance and make reduce the worst case to
atleast O(nlog(n))
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 24 / 26
25. References
Bucket Sort - Introduction to Algorithms, Thomas H Cormen, Charles
E Leiserson, Ronald L Rivest, Clifford Stein
Bucket Sort - Wikipedia (https://en.wikipedia.org/wiki/Bucket sort)
Bucket Sort - Geeks for Geeks
(https://www.geeksforgeeks.org/bucket-sort-2/)
Algorithms and Data Structures Kurt Mehlhorn and Peter Sanders -
Algorithm Engineering Chapter 1
Nivedit Jain (B18CSE039) Bucket Sort 4th
November 2020 25 / 26