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 n de um vetor e seus n 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 trocou para saber se houve troca na última passagem.
– Repetir enquanto trocou for verdadeiro:
• Definir trocou = 0.
• Para cada índice i de 0 até n-2, comparar o elemento na posição i com o de i+1.
• Se estiverem fora de ordem (no caso crescente, se v[i] > v[i+1]), trocar e marcar trocou = 1.
– Quando uma passagem não causar troca alguma, o vetor já está ordenado.

Passo 3

Pseudocódigo:
\begin{aligned} \text{Leia }n.\\\ \text{Para }i\leftarrow 0\text{ até }n-1\text{: leia }v[i].\\\ \text{Repita}\\\ \quad \text{trocou}\leftarrow 0\\\ \quad \text{Para }i\leftarrow 0\text{ até }n-2\text{:}\\\ \quad\quad \text{Se }v[i]>v[i+1]\text{ então}\\\ \quad\quad\quad \text{troque }v[i]\text{ e }v[i+1]\\\ \quad\quad\quad \text{trocou}\leftarrow 1\\\ \quad\quad \text{Fim se}\\\ \quad \text{Fim para}\\\ \text{Até que trocou = 0}\\\ \text{Imprima o vetor ordenado.} \end{aligned}ééãé

Passo 4

Agora vamos transformar esse pseudocódigo em um programa em C. Precisamos:
  1. Incluir as bibliotecas padrão (stdio.h).
  2. Declarar int n; e ler scanf("%d",&n);.
  3. Declarar um vetor int v[n]; e ler seus elementos.
  4. Usar um do { ... } while(trocou); para o laço externo e um for de 0 a n-2 para o laço interno, fazendo as comparações e trocas.
  5. 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;
}

Exercícios relacionados