Bubble Sort
The bubble sort is one of the simplest and most popular sorting algorithms.
The bubble sort works by repeatedly swapping adjacent elements until they are no longer in the intended order.
It is called bubble sort because it mimics the movement of bubbles in water.
A bubble in water rises to the surface each time; similarly, elements in the bubble sort are moved to the end in each iteration.
Although simple to use, bubble sort is mainly used as an educational tool because its performance is poor in the real world.
It is not suitable for large data sets.
The average and worst-case complexity of Bubble sort is O (n^{2})
, where n is a number of items.
Time Complexity
Case | Time Complexity |
---|---|
Best Case | O(n) |
Average Case | O(n^{2}) |
Worst Case | O(n^{2}) |
- Best Case O(1):It occurs when there is no sorting needed, i.e. the array is already sorted.
- Average Case O(n): The array elements are in a jumbled order that is not properly ascending and descending.
- Worst Case O(n): This occurs when the array elements need to be sorted in reverse order. In other words, suppose you have to sort an array in ascending order, but its elements are arranged in descending order.
Space Complexity
Space Complexity | O(1) |
Stable | Yes |
- A bubble sort required extra variables for swapping. Hence, the space complexity of bubble sorting is
O(1)
. - The space complexity of optimized bubble sort is
O(2)
. It is because two extra variables are required in optimized bubble sort.
Bubble Sort
#include <stdio.h>
//function to print array elements
void print(int a[], int n) {
int i;
for(i = 0; i < n; i++)
printf("%d ",a[i]);
}
// function to implement bubble sort
void bubble_sort(int a[], int n) {
int i, j, temp;
for(i = 0; i < n; i++) {
for(j = i+1; j < n; j++) {
if(a[j] < a[i]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
void main() {
int i, j, temp;
int a[6] = { 50, 20, 32, 13, 30, 18};
int n = sizeof(a) / sizeof(a[0]);
printf("Before sorting array elements are - \n");
print(a, n);
bubble_sort(a, n);
printf("\nAfter sorting array elements are - \n");
print(a, n);
}
public class BubbleSort {
//function to print array elements
static void print (int a[]) {
int n = a.length;
for (int i = 0; i < n; i++)
System.out.print(a[i] + " ");
}
// function to implement bubble sort
static void bubbleSort(int a[]) {
int n = a.length;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (a[j] < a[i]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
public static void main(String[] args) {
int a[] = {35, 10, 31, 11, 26};
System.out.println("Before sorting array elements are - ");
print(a);
bubbleSort(a);
System.out.println();
System.out.println("After sorting array elements are - ");
print(a);
}
}