# bubble sort complexity

Let’s take an array of elements 52, 35, 91, 31, 56. So bubble sort is slower than most of sorting algorithms. Since 11 > 5, so we swap the two elements. It uses no auxiliary data structures (extra space) while sorting. Bubble sort is beneficial when array elements are less and the array is nearly sorted. The modified array after pass=3 is shown below-. Bubble sort is an in-place sorting algorithm. Compare it with the 3rd element (91). As 91 is greater than 52, do nothing. Complete code work on two loops. Your name can also be listed here. Thanks, Jacob! It will make your understanding clear. We perform the comparison A > A and swaps if the 0. Increment the pointer to point 3rd element (91) compare with the 4th element (31). Finally, the array after pass=4 is shown below-. In average case, bubble sort may require (n/2) passes and O(n) comparisons for each pass. 52. I very much appreciate as you share your coding knowledge. Bubble Sort is an easy-to-implement, stable sorting algorithm with a time complexity of O(n²) in the average and worst cases – and O(n) in the best case. In each pass, bubble sort places the next largest element to its proper position. 1. We perform the comparison A > A and swaps if the 3. It does not require any extra space as it is an in-place sorting algorithm. If the order is wrong, it just swaps the element. Bubble sort is the easiest sorting algorithm to implement. But still the above algorithm executes the remaining passes which costs extra comparisons. In Bubble Sort, n-1 comparisons will be done in the 1st pass, n-2 in 2nd pass, n-3 in 3rd pass and so on. The worst case time complexity of bubble sort algorithm is O (n 2). It requires n iterations. Save my name, email, and website in this browser for the next time I comment. So, in this post, I will ponder Bubble sort in C with the explanation in detail. All Rights Reserved. So the best case complexity is  Ω(n). When the input array contains a large number of elements, the efficiency of bubble sort decreases dramatically and the average time increases quadratically. Hence, the worst case time complexity of bubble sort is O(n x n) = O(n. In best case, the array is already sorted but still to check, bubble sort performs O(n) comparisons. We perform the comparison A > A and swaps if the 1. Similarly after pass=3, element 6 reaches its correct position. To avoid extra comparisons, we maintain a flag variable. Hence, the average case time complexity of bubble sort is O(n/2 x n) = Θ(n. Bubble sort uses only a constant amount of extra space for variables like flag, i, n. Hence, the space complexity of bubble sort is O(1). Since 11 > 7, so we swap the two elements. Finally after the first pass, we see that the largest element 11 reaches its correct position. Bubble Sort Algorithm with Example is given. Once we need to swap adjacent values for correcting their wrong order, the value of flag variable is set to 1. It then swaps the two elements if they are in the wrong order. The inner loop deterministically performs O(n) comparisons. Set Flag: = True 2. Number of swaps in bubble sort = Number of inversion pairs present in the given array. The main disadvantage of bubble sort is time complexity. The bubble sort algorithm is easy to understand and to implement. Let’s take the best case where the input array is already sorted. In computer graphics it is popular for its capability to detect a very small error (like swap of just two elements) in almost-sorted arrays and fix it with just linear complexity (2n). If there are n-elements in the array, it iterates loop n times. The time complexity of Bubble Sort Algorithm is O(n2) and its space complexity is O(1). You motivate me to learn and share more with you. © 2020 – CSEstack.org. The zero value of flag variable denotes that we have not encountered any swaps. Bubble sort uses two loops- inner loop and outer loop. There are so many alternative algorithms which take O(n*log(n)) time for sorting. It is the basic sorting algorithm to sort array elements. If we encounter a pass where flag == 0, then it is safe to break the outer loop and declare the array is sorted. I hold a Master of Computer Science from NIT Trichy. You will find more sorting algorithms in this overview of all sorting algorithms and their characteristics in the first part of the article series. This is because at this point, elements 2 and 5 are already present at their correct positions. Most practical sorting algorithms have substantially better worst-case or average complexity, often O(n log n). I keep sharing my coding knowledge and my own experience on. Hence, the best case time complexity of bubble sort is O(n). The modified array after pass=2 is shown below-. Bubble sort has a worst-case and average complexity of О(n ), where n is the number of items being sorted. Got a tip? The array is partitioned into two parts; the second half is sorted (mentioned above in bold format). It compares the pair of adjacent elements from an array. Since 6 > 2, so we swap the two elements. What are the advantages of using Bubble sort? Now, we shall implement the above bubble sort algorithm on this array. Watch video lectures by visiting our YouTube channel LearnVidFun. If you have any question, please write in a comment. Bubble Sort Complexity: Loops run twice for each element in an array so it takes time O (n^2). If the array gets sorted after a few passes like one or two, then ideally the algorithm should terminate. What are the disadvantages of using Bubble sort? There is no need of swapping element and only one iteration is required. In each pass, bubble sort compares the adjacent elements of the array. Similarly after pass=2, element 7 reaches its correct position. It has a time complexity of O(n^2) in average and worst cases. Get more notes and other study material of Design and Analysis of Algorithms. Iterate the above steps (n-1) times (until you get a sorted array). Keep up. Only the second half of the array is sorted. I dabble in C/C++, Java too. Increment the pointer to point the second element i.e. When an array is sorted in descending order, the number of inversion pairs = n(n-1)/2 which is maximum for any permutation of array. Some of the important properties of bubble sort algorithm are-, The number of swapping needed to sort the numbers 8, 22, 7, 9, 31, 5, 13 in ascending order using bubble sort is-  (ISRO CS 2017).