Bubble Sort
See it animated in Zerethon Tools ↗Repeatedly swap adjacent out-of-order pairs; stop early when a pass makes no swap — O(n²).
Implementations
Sign in to open in IDE
Sign in with your Zerethon account to create your own copy of this sample.
Files
// Bubble Sort (Zerethon Official Sample: bubble-sort 1.2.0).
// The algorithm as shown in Zerethon Tools.
public class BubbleSort {
static void bubbleSort(int[] a) {
int n = a.length;
for (int i = 0; i < n - 1; i++) {
boolean swapped = false;
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
swapped = true;
}
}
if (!swapped) break; // already sorted
}
}
}
// Checks for bubbleSort. To run them, set this file as the entry file
// (the ▶ button next to it in Files) and press Run.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BubbleSortTest {
/** Deterministic pseudo-random integers in [-50, 49] (the same as the Python checks). */
static int[] numbers(long seed, int count) {
int[] out = new int[count];
for (int i = 0; i < count; i++) {
seed = (seed * 1103515245L + 12345L) % 2147483648L;
out[i] = (int) (seed % 100) - 50;
}
return out;
}
public static void main(String[] args) {
List<int[]> cases = new ArrayList<>(List.of(
new int[] {}, new int[] {1}, new int[] {2, 1}, new int[] {1, 2, 3}, new int[] {3, 2, 1},
new int[] {5, 1, 5, 1, 5}, new int[] {-3, 0, -1, 2}));
cases.add(numbers(1, 10));
cases.add(numbers(2, 50));
cases.add(numbers(3, 200));
for (int[] c : cases) {
int[] result = c.clone();
BubbleSort.bubbleSort(result);
int[] expected = c.clone();
Arrays.sort(expected);
if (!Arrays.equals(result, expected)) {
System.err.println("bubbleSort(" + Arrays.toString(Arrays.copyOf(c, Math.min(6, c.length))) + "...) = " + Arrays.toString(result));
System.exit(1);
}
}
System.out.println("All " + cases.size() + " checks passed.");
}
}
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] numbers = {38, 27, 43, 3, 9, 82, 10, 27};
System.out.println("Before: " + Arrays.toString(numbers));
int[] result = numbers.clone();
BubbleSort.bubbleSort(result);
System.out.println("After: " + Arrays.toString(result));
int[] expected = numbers.clone();
Arrays.sort(expected);
System.out.println("Same as Arrays.sort(): " + Arrays.equals(result, expected));
}
}
# Bubble Sort
Zerethon Official Sample `bubble-sort`, version 1.2.0, Java 25.
- `BubbleSort.java` — the algorithm, as shown in Zerethon Tools
- `Main.java` — entry file: a short demonstration
- `BubbleSortTest.java` — checks; set it as the entry file to run them
Every `.java` file is compiled together before the entry file's class runs.
This project is your own copy. Changing it never changes the official sample.
See the algorithm animated: https://tools.zerethon.com/bubble-sort-visualizer
Source: Zerethon Official Sample. Algorithm as shown in the Zerethon Tools Bubble Sort Visualizer.