Utilizando a linguagem de programação C/C++ escreva um programa que teste estrutura de ordenação do tipo bubble sort, de números inteiros. O programa deverá permitir a digitação de um vetor com 10 elementos e possuir uma função que ordene estes valores utilizado o método Bubble Sort. Observe que para concluir esta tarefa o seu programa deverá imprimir o vetor não ordenado, o vetor ordenado e o resultado de cada passo do processo de ordenação.
Alguém pode me ajudar?
#include <stdio.h>
#include <stdlib.h>
#define max 10
void bubble (int *a)
{
//FUNÇÃO BUUBLE SORT
int i, x, y, aux;
for(x=0; x<max; x++){
for(y=x+1; y<max; y++){
if(a[y] < a[x]){
printf("\n\nORDENANDO POSICAO %d:\n\n\t", x);
for(i=0 ; i < max ; i++){
printf( "[%d]", a[i]);
}
aux = a[x];
a[x] = a[y];
a[y] = aux;
}
}
printf("\n");
}
}
int main(int argc, char** argv){
int vetor[max], x, y, i, aux, a;
//ENTRADA DE DADOS
for(x=0 ; x < max ; x++){
printf("Entre com o numero %d: \t", x+1);
scanf("%d", &vetor[x]);
}
//SAIDA DE DADOS
printf("\n\nVETOR!!\n\n\t");
for(x=0 ; x < max ; x++){
printf( "[%d]",vetor[x]);
}
//CHAMADA DA FUNÇÃO PARA MOSTAR O VETOR ORDENADO
bubble(vetor);
//SAIDA DE DADOS ORDENADOS
printf("\n\nVETOR ORDENADO!!\n\n\t");
for(x=0; x<max; x++)
printf("[%d]",vetor[x]);
printf("\n");
return 0 ;
}
Eu fiz assim, corri atras de foruns e aprendi. Funcionou tranquilo.
xD
void bubble(int vet[], int tl) {
int i = 0, tl2 = tl, aux;
while (tl2 > 0) {
while (i < tl) {
if (vet[i] > vet[i + 1]) {
aux = vet[i];
vet[i] = vet[i + 1];
vet[i + 1] = aux;
}
i++;
}
i = 0;
tl2--;
}
}
tl é o tamanho lógico do vetor, entrada de dados pode ser como está na resposta acima.
Inicialmente definimos as variáveis que serão utilizadas no programa e o vetor solicitado:
#include <stdio.h>
int main() {
int aux,j;
int v[10];
int i, posicao;
int max=0;
Agora devemos preencher o vetor de 10 posições com valores dados pelo usuário:
printf("Digite os valores: ");
for(i=0;i<10;i++){
scanf("%i",&v[i]);
}
Podemos reapresentar o vetor não ordenado.
printf("Vetor não ordenado ");
for(i=0;i<10;i++){
printf(" %i ",v[i]);
}
Agora devemos iniciar o Bubble Sort, que consiste em ordenar o vetor sempre verificado todos os números e jogando seu máximo para o início. Assim, teremos dois laços, um para encontrar o maior valor e outro para garantir que o vetor será verificado totalmente. Ao decorrer do processo podemos já mostrar o resultado de cada processo. Assim
printf(" Processo ");
j=0;
for(int k=0;k<9;k++){
max=0;
for(i=j;i<10;i++){ //verifica o maior valor existente
if(v[i]>max){
max=v[i];
posicao = i;
}
}
Após o valor máximo definido, devemos deslocado para primeira posição representada por k e aumentar j, para que o próximo loop de verificação examine um menor espaço do vetor, assim teremos que:
j++;
aux=v[k];
v[k]=max;
v[posicao]=aux;
Ainda dentro do for dependente de k, podemos apresentar o resultado de cada processo e em seguida finaliza-lo.
for(int cont=0;cont<10;cont++){
printf(" %i ",v[cont]);
}
printf(" ");
}
Ao fim dos processors, podemos apresentar o vetor ordenado, dessa forma teremos que:
printf("Vetor ordenado ");
for(i=0;i<10;i++){
printf(" %i ",v[i]);
}
return(0);
}
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar