5)Faça um programa para receber do usuário a dimensão e os elementos de um vetor e efetuar a sua ordenação utilizando o método da bolha.Neste método de ordena- ção,percorre-se o vetor comparando cada elemento com o seguinte:se eles esti- verem na ordem errada,os elementos são permutados.O vetor é percorrido tantas vezes quantas necessárias até que não seja necessário mudar nenhum elemento.
Passo 1
O enunciado pede um programa que leia do usuário a dimensão
de um vetor e seus
elementos, e então o ordene pelo método da bolha (bubble sort). Esse método compara pares de elementos consecutivos, trocando-os se estiverem na ordem errada, e repete o processo até que nenhuma troca seja necessária. Vamos precisar de um laço externo que repita varreduras no vetor e de um laço interno que faça as comparações e trocas.
Passo 2
A lógica do bubble sort é:
– Inicializar uma variável de controle
– Repetir enquanto
• Definir
• Para cada índice de 0 até
, comparar o elemento na posição
com o de
.
• Se estiverem fora de ordem (no caso crescente, se ), trocar e marcar
– Quando uma passagem não causar troca alguma, o vetor já está ordenado.
– Inicializar uma variável de controle
trocou
para saber se houve troca na última passagem.– Repetir enquanto
trocou
for verdadeiro:• Definir
trocou = 0
.• Para cada índice
• Se estiverem fora de ordem (no caso crescente, se
trocou = 1
.– Quando uma passagem não causar troca alguma, o vetor já está ordenado.
Passo 3
Pseudocódigo:
Passo 4
Agora vamos transformar esse pseudocódigo em um programa em C. Precisamos:
- Incluir as bibliotecas padrão (
stdio.h
). - Declarar
int n;
e lerscanf("%d",&n);
. - Declarar um vetor
int v[n];
e ler seus elementos. - Usar um
do { ... } while(trocou);
para o laço externo e umfor
de0
an-2
para o laço interno, fazendo as comparações e trocas. - Ao final, imprimir o vetor já ordenado.
Resposta
#include <stdio.h>
int main() {
int n;
printf("Digite a dimensao do vetor: ");
scanf("%d", &n);
int v[n];
for (int i \(=0\); i < n; i\(++\)) {
printf("Elemento[%d]: ", i);
scanf("%d", &v[i]);
}
int trocou;
do {
trocou \(=0\);
for (int i \(=0\); i < n - 1; i\(++\)) {
if (v[i] > v[i \(+1\)]) {
int temp = v[i];
v[i] = v[i \(+1\)];
v[i \(+1\)] = temp;
trocou \(=1\);
}
}
} while (trocou);
printf("Vetor ordenado: ");
for (int i \(=0\); i < n; i\(++\)) {
printf("%d ", v[i]);
}
printf("
");
return 0;
}