Pular para conteúdo

Bubble Sort

O Bubble sort troca repetidamente elementos adjacentes que estão invertidos. Depois de cada passagem, o maior elemento restante alcança sua posição final.

static void bubbleSort(int[] values) {
    for (int end = values.length - 1; end > 0; end--) {
        boolean swapped = false;
        for (int i = 0; i < end; i++) {
            if (values[i] > values[i + 1]) {
                int temporary = values[i];
                values[i] = values[i + 1];
                values[i + 1] = temporary;
                swapped = true;
            }
        }
        if (!swapped) return;
    }
}

Após uma passagem que termina no índice end, values[end] é o máximo do prefixo restante e está em sua posição final. Com a saída antecipada, o melhor caso é Θ(n); os casos médio e pior são Θ(n²). O algoritmo usa espaço auxiliar Θ(1) e é estável porque elementos iguais não são trocados.