Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvida bubblesort


angelita

Pergunta

Pessoal bom dia, estou com problemas para entender o funcionamento da estrutura em C. Tenho um problema pra resolver mas não estou conseguindo fazer as impressões corretas, no problema pede para que eu faça um vetor com "n" posições

desordenado e que coloque o mesmo em orde. Então depois de feito isso eu devo imprimir quantas comparações foram feitas e quantas trocas, mais eu estou me enrrolando na hora de colocar o contador, a baixo segue o que eu fiz, alguém por favor pode dar uma olhada e me ajudar ??

# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# define n 6


int main ()
{
    int vet [n], a;
    int i , j, aux, conttroca, contcompara;

    conttroca = 0; contcompara = 0;


    // inicializar o gerador de números aleatórios 
    srand(time(NULL));
    printf ("Numeros do vetor gerados aleatoriamente\n");
    for (a=0; a<n; a++)
    {
          para gerar números aleatórios de 0 a 50 */
          vet[a] = rand() % 50;

          
          printf ("%d \n", vet[a]);
     }
   

    for (i=0; i <(n-1); i++)
    {    
        

        for (j= (n-1); j >i; j--)
        {
            contcompara = contcompara +1;

            if (vet[j] < vet[j-1])

            {
                aux = (vet[j] < vet[j-1]);
                                                                vet [j] = vet [j-1];
                vet [j-1] = aux;

                                                     conttroca = conttroca +1;    
                
            }
              
            
        }
          
        
    }

          
          printf ("O numero de comparacoes foi de : %d \n", contcompara);
          printf ("O numero de trocas foi de : %d \n", conttroca);

}

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 6


int main () {

    int vet[n];
    int i , j, aux, conttroca, contcompara;

    conttroca = 0;
    contcompara = 0;

    // inicializar o gerador de números aleatórios
    srand(time(NULL));
    printf ("Numeros do vetor gerados aleatoriamente\n");
    for (i=0; i<n; i++) {
        vet[i] = rand() % 50;
        printf ("%d \n", vet[i]);
    }

    for (i=0; i <(n-1); i++)
        for (j= (n-1); j >i; j--) {
            contcompara = contcompara +1;

            if (vet[j] < vet[j-1]) {
                aux = vet[j]; // <------------------------------------------
                vet [j] = vet [j-1];
                vet [j-1] = aux;
                conttroca = conttroca +1;
            }
        }

    printf("\n");
    for (i=0; i<n; i++)
        printf ("%d \n", vet[i]);

    printf ("O numero de comparacoes foi de : %d \n", contcompara);
    printf ("O numero de trocas foi de : %d \n", conttroca);

    return 0;
}

Corrigi a linha "aux = vet[j]" e outras coisinhas, e aqui funcionou corretamente.

Veja se é o que você quer.

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, se você mudou apenas o valor de n lá no #define, deveria funcionar.

Um motivo pode ser que em alguns compiladores, o valor maximo que um int pode pegar é um pouco mais que 65000, então é preciso usar um "long int", em vez de apenas "int" nos valores de i, j, conttroca e contcompara.

Link para o comentário
Compartilhar em outros sites

  • 0
Bem, se você mudou apenas o valor de n lá no #define, deveria funcionar.

Um motivo pode ser que em alguns compiladores, o valor maximo que um int pode pegar é um pouco mais que 65000, então é preciso usar um "long int", em vez de apenas "int" nos valores de i, j, conttroca e contcompara.

Era esse mesmo o problema agora ta funcionando corretamente ...Muito obrigada!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...