Bubble Sort
O algoritmo de bubble sort consiste em comparar pares consecutivos e, caso necessário, trocas as posições quando o elemento a esquerda for maior do que a da direita.
Note
Bubble sort é o algoritmo de ordenação com o pior desempenho com uma complexidade de tempo
.
Implementação:
void bubble_sort(int v[], int n) {
// repetir (n – 1) vezes
for (int i = 1; i < n; ++i) {
// percorrer cada posição do vetor
for (int j = 0; j < n - 1; ++i) {
// se elemento atual for maior que o próximo
if (v[i] > v[i + 1]) {
// trocar os elementos entre as 2 posições
trocar(v, i, i + 1);
}
}
}
}
Existe uma variação desse algoritmo chamado de bubble sort com sentinela que basicamente adicionar uma variável booleana “sentinela”, inicialmente com valor false
, para indicar se houve alguma alteração no vetor. Se alguma troca for feita o valor é alterado para true
, caso contrário, para false
e então o algoritmo é encerrado.
Implementação:
void bubble_sort(int v[], int n) {
for (int i = 1; i <= n - 1; ++i) {
bool sentinela = false;
for (int j = 0; j < n - 1; ++i) {
if (v[i] > v[i + 1]) {
trocar(v, i, i + 1);
mudou = true;
}
}
if (!sentinela) {
return;
}
}
}