Bubble Sort is a simple technique for sorting a bunch of n elements that are provided in the form of an array with n elements. Bubble Sort examines each element individually and sorts them according to their values. If an array must be sorted in ascending order, bubble sort will begin by comparing the first and second items of the array, swapping both elements if the first element is greater than the second, and then moving on to compare the second and third elements, and so on. If there are n elements in total, we must repeat the operation n-1 times. It’s called bubble sort because the largest element in the provided array bubbles up to the final position or highest index with each complete iteration, iteration just like a water bubble rises to the water surface.

## Bubble Sort Applications

Bubble sort is the simplest form of sorting algorithm, but due to its poor performance, it is not commonly employed in real-world computer science. The following are some of the most popular applications for programmers:

### A method for learning the fundamentals of sorting

Because the technique is simple to comprehend and implement, bubble sort is a good way to teach inexperienced programmers how to sort data sets.

### A technique for sorting small datasets

Bubble sort is not ideal for larger datasets since it must continually cycle through the complete collection of components, comparing only two nearby items at a time. It can, however, be effective when sorting a limited number of items.

### An approach for sorting datasets that are generally in order

Finally, some data scientists and analysts employ the technique as a final check for datasets that they feel are virtually sorted.

## Working of Bubble Sort

With the aid of an unsorted array example, we will understand bubble sort. Consider the array below:

The first two items in the bubble sort are compared to see which one is larger.

Since value 34 is larger than 15, it is already in sorted places in this example. Then we compare 34 to 28.

28 is less than 34, therefore they must be exchanged.

This is how the new array should look:

After that, we’ll compare 34 and 36. We discover that both have actually been sorted.

After that, we’ll look at the next two numbers, 36 and 11.

Then we know that 11 is less than 36. As a result, they are not sorted. These numbers are swapped.

We come to the conclusion that we have reached the end of the array. The array should look like this after one iteration:

To be more specific, we’re now presenting how an array should appear after each iteration. It should look like this after the second iteration:

It’s important to note that at the end of each cycle, at least one value changes.

Bubble sorts automatically learn that an array is entirely sorted when no swap is necessary. So, the sorted array is:

## Algorithm for Bubble Sort

**Step 1:** Start at index zero and compare each value to the next i.e., a[0] to a[1]) and if a[0] > a[1], swap their values. Compare a[1] with a[2], and swap if a[1] is greater than a[2]. Carry on in this manner until you reach the end of the array. After that, you’ll have the largest element at the end. The whole thing is referred to as a pass. We handle array elements from [0,n-1] in the first run.

**Step 2:** Because the last one, a[n-1], is present at its right location, repeat step one but process array elements [0, n-2]. The greatest two elements are present at the end of this phase.

S**tep 3:** Continue this procedure n-1 times more.

## The Complexity of Bubble Sort

### Time Complexity of Bubble Sort

We must do N iterations in the bubble sort. Each cycle includes a comparison, and, if necessary, swapping is performed. The first iteration compares (N – 1) elements in an array of size N. (N – 2) comparisons are performed in the second iteration. As a result, the total number of comparisons will be as follows:

As a result, the time complexity of the bubble sort in the average case is O ({n}^{2}). Let’s talk about the best-case and worst-case scenarios for bubble sorting now. When the input array is already sorted, this is the best-case scenario. In this example, we examine all N components to determine whether any swaps are required. We proceed and finish N iterations if there is still no swapping. As a result, the time complexity of the bubble sort would be O ({n}^{2}) in the best-case scenario. In the worst-case scenario, the array is sorted backward. As a result, in the first iteration, we must perform (N – 1) comparisons, then (N – 2) comparisons in the second iteration, and so on. As a result, the worst-case time complexity of the bubble sort is the same as the average and best-case time complexity: O ({n}^{2}).

### The Space Complexity of Bubble Sort

The space complexity of this technique is O(1) since it only uses auxiliary variables for flags and temporary variables.