Skip to content
SimpleScope

Sorting

Bubble sort vs Counting sort

Bubble sort and Counting sort both put an array in order, in different ways. Bubble sort: swap neighbors that are out of order. Counting sort: count each value, turn the counts into positions and place the values, with no comparisons. Counting sort compares no values: it takes O(n + k), where k is the number of possible values (or digit values) and d the number of digits (radix sort), while bubble sort takes O(n²) in the worst case. Counting sort is faster only when k and d are small compared with n; bubble sort makes no assumption about the values.

At a glance

PropertyBubble sortCounting sort
TechniqueSwap neighbors that are out of orderCount each value, turn the counts into positions and place the values, with no comparisons
Compares values with each otherYesNo
Best case timeO(n)O(n + k)
Average case timeO(n²)O(n + k)
Worst case timeO(n²)O(n + k)
Extra spaceO(1)O(n + k)
Stable (equal values keep their order)YesYes
In place (no extra array)YesNo
Needs sorted inputNoNo

When to choose each

Choose bubble sort when

you want the simplest sort to explain, on tiny or almost sorted data.

Avoid it when

the data is large.

Choose counting sort when

the values are whole numbers in a range k that is small compared with n.

Avoid it when

the range of values is large, or the values are not whole numbers.

The same inputs, counted

These numbers come from running both real implementations: operations (comparisons plus writes, a swap counting as two writes). Counting sort makes no comparisons, so its count is writes only. It includes the k + 1 cells of the count array.

InputBubble sortCounting sort
Mixed4047
Already sorted647
Reversed6347
Nearly sorted1347
Duplicates4747

See them run

More comparisons