Dsa Bubbe Sort
Dsa Bubbe Sort
❮ PreviousNext ❯
Bubble Sort
Bubble Sort is an algorithm that sorts an array from the lowest value to the
highest value.
Speed:
Bubble Sort
Run the simulation to see how it looks like when the Bubble Sort algorithm sorts
an array of values. Each value in the array is represented by a column.
The word 'Bubble' comes from how this algorithm works, it makes the highest
values 'bubble up'.
How it works:
Continue reading to fully understand the Bubble Sort algorithm and how to
implement it yourself.
Step 2: We look at the two first values. Does the lowest value come first? Yes,
so we don't need to swap them.
Step 3: Take one step forward and look at values 12 and 9. Does the lowest
value come first? No.
Can you see what happened to the highest value 12? It has bubbled up to the
end of the array, where it belongs. But the rest of the array remains unsorted.
So the Bubble Sort algorithm must run through the array again, and again, and
again, each time the next highest value bubbles up to its correct position. The
sorting continues until the lowest value 3 is left at the start of the array. This
means that we need to run through the array 4 times, to sort the array of 5
values.
And each time the algorithm runs through the array, the remaining unsorted
part of the array becomes shorter.
Bubble Sort
[
7,
12,
9,
11,
3
]
We will now use what we have learned to implement the Bubble Sort algorithm
in a programming language.
Example
my_array = [64, 34, 25, 12, 22, 11, 90, 5]
n = len(my_array)
for i in range(n-1):
for j in range(n-i-1):
Run Example »
In this case, the array will be sorted after the first run, but the Bubble Sort
algorithm will continue to run, without swapping elements, and that is not
necessary.
If the algorithm goes through the array one time without swapping any values,
the array must be finished sorted, and we can stop the algorithm, like this:
Example
my_array = [7, 3, 9, 12, 11]
n = len(my_array)
for i in range(n-1):
swapped = False
for j in range(n-i-1):
swapped = True
if not swapped:
break
Run Example »
Bubble Sort Time Complexity
For a general explanation of what time complexity is, visit this page.
For a more thorough and detailed explanation of Bubble Sort time complexity,
visit this page.
The Bubble Sort algorithm loops through every value in the array, comparing it
to the value next to it. So for an array of nn values, there must be nn such
comparisons in one loop.
And after one loop, the array is looped through again and again nn times.
This means there are n⋅nn⋅n comparisons done in total, so the time complexity
for Bubble Sort is:
O(n2)––––––––––––––O(n2)__
The graph describing the Bubble Sort time complexity looks like this:
As you can see, the run time increases really fast when the size of the array is
increased.
Luckily there are sorting algorithms that are faster than this, like Quicksort, that
we will look at later.
You can simulate Bubble Sort below, where the red and dashed line is the
theoretical time complexity O(n2)O(n2). You can choose a number of
values nn, and run an actual Bubble Sort implementation where the operations
are counted and the count is marked as a blue cross in the plot below. How does
theory compare with practice?
Random
Worst Case
Best Case
10 Random
Operations: 0
Run Clear
DSA Exercises
Test Yourself With Exercises
Exercise:
Using Bubble Sort on this array:
[7,14,11,8,9]
How does the array look like after the FIRST run through?
[ , , , , ]