Professional Documents
Culture Documents
Sagar Virani
Assistant Professor
Computer Engineering
Department
• Example:
• Input: <4, 1, 3, 4, 3>
• n = 5 and k = 4
Counting Sort
• It determines, for each input element x, the number less than x.
• Using this information, the algorithm place’s x directly into its position
in the output array.
• Example:
• If 17 elements are less than x, then x belongs to position 18 in the
output array.
Counting Sort
• The algorithm uses three arrays:
Input list
2 5 3 0 2 3 0 3
Counting Sort
A 2 5 3 0 2 3 0 3
0 1 2 3 4 5
C 0 0 0 0 0 0
Counting Sort
C 2 0 0 0 0 0
Counting Sort
C 2 0 0 0 0 0
Counting Sort
C 2 0 2 0 0 0
Counting Sort
C 2 0 2 3 0 0
Counting Sort
C 2 0 2 3 0 0
Counting Sort
C 2 0 2 3 0 1
Counting Sort
C 2 0 2 3 0 1
Addition
Counting Sort
C 2 2 2 3 0 1
Addition
Counting Sort
C 2 2 4 3 0 1
Addition
Counting Sort
C 2 2 4 7 0 1
Addition
Counting Sort
C 2 2 4 7 7 1
Addition
Counting Sort
A 2 5 3 0 2 3 0 3
0 1 2 3 4 5
C 2 2 4 7 7 8
Counting Sort
1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3
0 1 2 3 4 5
• Take auxiliary array B (empty array)
C 2 2 4 7 7 8
whose size is equal to size of A.
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B
C 2 2 4 7 7 8
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 3
C 2 2 4 6 7 8
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3
C 1 2 4 6 7 8
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3 3
C 1 2 4 5 7 8
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 2 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 2 3 3
C 1 2 3 5 7 8
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 2 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 2 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3
C 0 2 3 5 7 8
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3
C 0 2 3 4 7 8
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3 5
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3 5
C 0 2 3 4 7 7
Counting Sort
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3 5
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 3 3 3 5
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 2 3 3 3 5
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 2 3 3 3 5
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
A 2 5 3 0 2 3 0 3 B 0 0 2 2 3 3 3 5
Sorted!!!
0 1 2 3 4 5
C 0 2 2 4 7 7
Counting Sort
Algorithm
COUNTING-SORT(A, B, k)
let C[0…..k] be a new array
for i = 0 to k
C[ i ] = 0
for j = 1 to A.length
C[ A[ j ] ] = C[ A[ j ] ] + 1
for i =1 to k
C[ i ] = C[ i ] + C[ i – 1 ]
for j = A.length downto 1
B[C[ A[ j ] ] ] = A[ j ]
C[ A[ j ] ] = C[ A[ j ] ] – 1
Counting Sort
Analysis
COUNTING-SORT(A, B, k)
let C[0…..k] be a new array
for i = 0 to k Θ(k)
C[ i ] = 0
for j = 1 to A.length Θ(n)
C[ A[ j ] ] = C[ A[ j ] ] + 1
for i =1 to k Θ(k)
C[ i ] = C[ i ] + C[ i – 1 ]
for j = A.length downto 1 Θ(n)