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
| chamada | saí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.