Pular para o conteúdo

Bubble sort

objetivo Comparar vizinhos e trocar. O maior sobe pro fim a cada passada.

Olhe v[j] e o vizinho v[j+1]. Fora de ordem, . Depois ande uma casa e repita até o fim.

Quando a primeira passada termina, o maior valor de todos está na última posição. Por isso o nome bolha.

O laço de dentro vai até n - 1 - i porque, depois de i passadas, as i últimas posições já estão certas. Essa conta é pergunta de prova.

exemplo.cclique numa linha pra entender ela

Onde todo mundo escorrega

  • Se o laço de dentro for até n, o v[j+1] da última volta lê fora do vetor.
  • Chamar trocar(v[j], v[j+1]) sem & compila e não troca nada.

Desafio

Escreva bubble_sort, que coloca o vetor em ordem crescente. A função trocar já está pronta no editor. Escreva só as funções, sem o main.

void bubble_sort(int v[], int n)
o que a função tem que devolver
chamadasaída esperada
v = {5, 3, 8, 1, 9}imprimirVetor(v, 5)1 3 5 8 9
v = {1, 2, 3}imprimirVetor(v, 3)1 2 3
v = {4, 4, 2}imprimirVetor(v, 3)2 4 4
a sua função
linha 1
void trocar(int *a, int *b) {
    int temporario = *a;
    *a = *b;
    *b = temporario;
}

void bubble_sort(int v[], int n) {
    // dois lacos: passadas por fora, comparacoes por dentro
}

Ctrl+Enter (Cmd+Enter no Mac) roda. Esc sai do editor.

aperte Rodar pra ver a saída aqui

Dicas

Tenta sozinho primeiro. Travou de verdade, abre a primeira.