Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: gits rlzz
Por montaro
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Murilo em (última atualização em 12/04/2010)   [ 6057 hits ]

Login: Murilo_FS, 44821 pontos

   


Descrição

Este algoritmo ordena um vetor de uma quantidade de números pré-determinada. O diferencial é que ele não utiliza ponteiros para a passagem de parâmetros, pois ponteiros é um pouco complicado para iniciantes.

A utilização é simples, digite o número máximo de algarismos e depois digite os algarismos fora de ordem, a função vai ordena-los e imprimi-los em ordem.

Para compilar com o gcc é simples:

$ gcc -c bubble_sort.c
$ gcc -o bubble_sort bubble_sort.o
$ ./bubble_sort

Qualquer dúvida em relação ao código e só deixar um comentário que eu explico.

Abraços.

[ Download: bubble_sort.c ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

/* Algoritmo de ordenação Bubble Sort */

#include <stdio.h>

  /* Definição da função bubble_sort */
  void bubble_sort (int vet[], int max) {      
    int flag, i, aux;  
    
    do {
      flag = 0;
      for (i = 0; i < (max - 1); i++) {
   
   /* Verfica se o vetor está em ordem, no caso ele coloca em ordem crescente, para decrescente trocar '>' por '<' */
   if (vet[i] > vet[i+1]) {
     /* Caso não esteja, ordena */
     aux = vet[i];
     vet[i] = vet[i+1];
     vet[i+1] = aux;
     flag =1;
   }
      }
    /* Repete enquanto algum valor estiver fora de ordem */  
    } while (flag == 1);
    
    /* Imprime o vetor ordenado em ordem crescente */
    for (i = 0; i < max; i++) {
      printf ("%d ",vet[i]);
    }
    printf ("\n");
  }

main () {
  int max, i;
  
  /* Lê o total de números do vetor */
  scanf ("%d", &max);
  
  /* Define o vetor com o número max de algarismos */
  int vetor[max];
  
  for (i = 0; i < max; i++) {
    /* Lê cada indice do vetor */
    scanf ("%d",&vetor[i]);
  }
  
  /* Dentro dessa função o vetor será ordenado */
  bubble_sort (vetor, max);
  
}

Scripts recomendados
   Script Linux recomendado Tabuada no terminal
   Script Linux recomendado Múltiplos de 7 - Descrescente
   Script Linux recomendado Criar diretorios
   Script Linux recomendado Exemplo de janela utilizando o compilador Vala
   Script Linux recomendado Calculando o PESO IDEAL

Comentários
[1] Comentário enviado por eduardo em 12/04/2010 - 15:38h:

Tem certeza que dá para declarar um vetor sem tamanho específico? Nunca vi isso. Tu não teria que usar ponteiros para tal?

Funcionou esse código pra ti? Vai ver depende do compilador, testei aqui e não funcionou. Inclusive faltou a definição da main.

Abraços

[2] Comentário enviado por Murilo_FS em 12/04/2010 - 19:34h:

Funcionou sim. Não usei ponteiros pois queria que entendessem o funcionamento dos algoritmos, e iniciantes geralmente sentem dificuldades em ponteiros. Aqui em casa funcionou, uso o gcc. Eu não declarei um vetor sem valor especifico, primeiro eu li a variavel max e depois declarei o vetor[max]. Se o valor de max for 10, por exemplo, seria o mesmo que vetor[10].
Eu poderia ter usado um contador, seria mais claro ainda. Nós fazíamos assim no curso, conforme se inseria um valor incrementava a variável de mais um.

[3] Comentário enviado por eduardo em 12/04/2010 - 20:47h:

É cara, acho que é o compilador mesmo. Testei em outro e realmente aceita este tipo de processo. É que compilo normalmente no programa gráfico direto, e não aceita esse tipo de formato.

Abraços.

[4] Comentário enviado por Murilo_FS em 12/04/2010 - 23:14h:

Eu inclusive testei de novo, pois eu programava em Windows no Dev-C e ele não é muito bom. Ficaria melhor ainda se declarasse um contador. E no for de leitura a cada algarismo digitado incrementar de um assim é possível digitar quantos quiser, só tem que definir um parâmetro de término do loop, por exemplo um numero negativo ou zero.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.