segunda-feira, 6 de junho de 2011

Modo de Ordenação Bolha

//Galera esse programa coloca em ordem crescente os números de um vetor analisando-os de dois em dois.
//Lembrando que eu fiz no Linux, então alguns comando estão faltando mas é só vocês completarem com "getch()" no final e "return(0)"

#include <stdio.h>
#include <stdlib.h>
#define MAX 5   //Define o símbolo MAX como 5

int main()
{
    int vet[MAX],x, k, aux;

    system( "clear" );   //limpa a tela, no win é cls.
 //Para carregar o vetor.
 
    for (x=0; x<MAX; x++)
    {
        printf("vet[%d] = ",x);
        scanf("%d",&vet[x]);
        //grava o numero na posição "x"
    }

//Aqui começa o modo bolha
    do{
         k=0; //Atribui falso a K.

         for (x=0; x<MAX ;x++)
         {
             if ( vet[x] > vet[x+1] )  //avalia se o numero da frente é menor.
             {
                 aux = vet[x];       //grava o numero da posição "x" em aux
                 vet[x] = vet[x+1];  //a posição "x" recebe o numero da frente.
                 vet[x+1]=aux;
                 //O que estava em aux vai para a posição da frente
                 k=1;  //coloca verdadeiro em k.
              }
           }
    }while(k!= 0); //enquanto houver trocas ele não sai do loop
   
//Mostrar o vetor na tela já em ordem crescente.

    printf("vet = ");
    for(x=0 ; x<MAX; x++)
    {
    printf(" %d ",vet[x]);
    }
    printf( "\n" );

}

Lembrando que esse método de ordenação é o mais lento, mas é o mais simples de entender a lógica.
É isso ai galera, qualquer duvida poste nos comentário \o/

by Wellington