terça-feira, 9 de abril de 2019

Ordenando um vetor com bubble sort

Estive com alguns pensamentos dentro de minha cabeça
sobre algorítimos de ordenação,
sim, isto me pertubou por uns bons minutos,
e comecei a me perguntar,
porque gastamos tanto tempo aprendendo
sobre os algorítimos ordenadores existentes,
alguns criados quando nós nem ainda éramos nascidos,
isto faz algum sentido?
Não podemos esconder de ninguém que somos
curiosos por tecnologia, e vivemos respirando,
para aprender ou pelo menos conhecer tudo sobre o assunto,
mas nosso cérebro tem limites, as informações
são adicionadas aos poucos, e algumas vezes nos sentimos
frustrados por não pode dominar tudo o que
gostaríamos de dominar.
Não encontrei resposta melhor do que esta, 
mas se você conseguir por favor poste nos comentários
para que possamos conhecer sua opinião.
Resposta:
Acelerar o processo de pesquisa no computador,
otimizando a capacidade de acessar
milhares de dados de forma eficiente,
para que o desempenho da máquina
não seja afetado enquanto estamos
fazendo outras tarefas ao mesmo tempo
em que programamos, ou ouvimos nossas músicas favoritas;
Pra mim esta é a resposta, e aqui está um bom exemplo
de uso do famoso método bubble sort para ordenação
de um vetor de inteiros carregado por um loop for,
e embaralhado para podermos aplicar a ordenação.


Veja abaixo imagens do programa em execução:



Veja abaixo o código do programa:


#include <stdio.h>
#include <conio.h>
#include <time.h>
#define TAM 100
bool x = false;
/*============================================================================*/
void Informe ( ) {
     textcolor ( LIGHTBLUE );
     gotoxy ( 26, 20 );
     printf ( "Criado por: " );
     textcolor ( LIGHTMAGENTA );
     gotoxy ( 126, 20 );
     printf ( "Samuel Lima" );
     textcolor ( BLACK );
     gotoxy ( 23, 23 );
     printf ( "                                " );
     gotoxy ( 26, 21 );
     printf ( "sa_sp10@hotmail.com" );
     textcolor ( LIGHTRED );
     gotoxy ( 36 , 23 );
     printf ( "MUITO OBRIGADO" );
}
/*============================================================================*/
//Criando uma moldura na tela do dos
int Moldura ( int tam_lin_ini, int tam_lin_fim,
         int tam_ini_col, int tam_fim_col ) {
     int i, c;
     for ( i = tam_lin_ini; i < tam_lin_fim; i++ ) {
         for ( c = tam_ini_col; c < tam_fim_col; c++ ) {
              gotoxy ( c, i );
              textbackground ( WHITE );
              printf ( " " );
         }
     }
     return 0;
}
/*============================================================================*/
int Cria_Vetor ( int vet [ ] ) {
     textcolor ( LIGHTRED );
     gotoxy ( 23 , 3 );
     printf ( "ORDENANDO UM VETOR COM BUBBLE SORT" );
     int i, r = 0, temp;
     for ( i = 0; i < TAM; i++ ) {
         vet [ i ] = i;
     }
     srand ( time ( NULL ) );
     for ( i = 0; i < TAM; i++ ) {
         r = rand ( ) % TAM;
         temp = vet [ i ];
         vet [ i ] = vet [ r ];
         vet [ r ] = temp;
     }
     return 0;
}
/*============================================================================*/
void bubble_sort ( int vet [ ], int tam_vet ) {
     int i, j, t;
     for ( i = tam_vet - 1; i >= 0; i-- ) {
         for ( j = 1; j <= i; j++ ) {
              if ( vet [ j - 1 ] > vet [ j ] ) {
                   t = vet [ j - 1 ];
                   vet [ j - 1 ] = vet [ j ];
                   vet [ j ] = t;
              }
         }
     }
}
/*============================================================================*/
void Imprime_Vetor ( int vet [ ] ) {
     int i;
     gotoxy ( 25, 7 );
     for ( i = 0; i < TAM; i++ ) {
         if ( i == 10 ) {
              gotoxy ( 25, 8 );
         }
         if ( i == 20 ) {
              gotoxy ( 25, 9 );
         }
         if ( i == 30 ) {
              gotoxy ( 25, 10 );
         }
         if ( i == 40 ) {
              gotoxy ( 25, 11 );
         }
         if ( i == 50 ) {
              gotoxy ( 25, 12 );
         }
         if ( i == 60 ) {
              gotoxy ( 25, 13 );
         }
         if ( i == 70 ) {
              gotoxy ( 25, 14 );
         }
         if ( i == 80 ) {
              gotoxy ( 25, 15 );
         }
         if ( i == 90 ) {
              gotoxy ( 25, 16 );
         }
         if ( vet [ i ] >= 0 && vet [ i ] < 10 ) {
              textcolor ( BLUE );
              printf ( "0" );
         }
         //Para impressão do vetor desordenado
         if ( x == false ) {
              textcolor ( BLUE );
              printf ( "%d ", vet [ i ] );
         }
         //Para impressão do vetor ordenado
         if ( x == true ) {
              textcolor ( BLUE );
              printf ( "%d ", vet [ i ] );
         }
     }//chave de fechamento do laço for
     textcolor ( LIGHTRED );
     gotoxy ( 29, 23 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
}
/*============================================================================*/
int main ( ) {
     system ( "title ORDENANDO UM VETOR COM BUBBLE SORT" );
     Moldura ( 2, 25, 3, 79 );
     textbackground ( WHITE );
     int vet [ TAM ];
     Cria_Vetor ( vet );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 5 );
     printf ( "Vetor gerado desordenado" );
     Imprime_Vetor ( vet );
     bubble_sort ( vet, TAM );
     textcolor ( LIGHTBLUE );
     gotoxy ( 25 , 5 );
     printf ( "Vetor ordenado por bubble sort" );
     Imprime_Vetor ( vet );
     Sleep ( 1800 );
     Informe ( );
     getche ( );
     return 0;
}
/*============================================================================*/