Answer
Bubble Sort in Java
Java
public class BubbleSort {
public static void main(String[] args) {
int n, c, d, temp;
int array[] = { 500, 300, 200, 400, 100 };
n = array.length;
System.out.println("Array Before Bubble Sort");
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
// Sorting
temp = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
if (array[j - 1] > array[j]) {
// Swap adjacent elements
temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
System.out.println();
System.out.println("Array After Bubble Sort");
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
}
}
Output
CODE
Array Before Bubble Sort
500 300 200 400 100
Array After Bubble Sort
100 200 300 400 500
How Bubble Sort Works (Step by Step)
CODE
Array: [500, 300, 200, 400, 100]
Pass 1: Compare and swap adjacent pairs
500 > 300 → swap → [300, 500, 200, 400, 100]
500 > 200 → swap → [300, 200, 500, 400, 100]
500 > 400 → swap → [300, 200, 400, 500, 100]
500 > 100 → swap → [300, 200, 400, 100, 500] ← 500 at end
Pass 2: Largest remaining "bubbles" to 2nd last
...and so on until sorted
Final: [100, 200, 300, 400, 500]
Optimized Bubble Sort (with early exit)
Java
for (int i = 0; i < n - 1; i++) {
boolean swapped = false;
for (int j = 0; j < n - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swapped = true;
}
}
if (!swapped) break; // already sorted, exit early
}
Time & Space Complexity
| Best | Average | Worst | |
|---|---|---|---|
| Time | O(n) | O(n²) | O(n²) |
| Space | O(1) | O(1) | O(1) |
