diff --git "a/Arquivos/Fun\303\247\303\265es.h" "b/Arquivos/Fun\303\247\303\265es.h" index c64b0a2750577223bab583a2813adec5b39a298c..718522364c1dd4acae64ce269ba86fe458e98940 100644 --- "a/Arquivos/Fun\303\247\303\265es.h" +++ "b/Arquivos/Fun\303\247\303\265es.h" @@ -3,5 +3,8 @@ void LerDados (int *Vetor); void GeraVetor (int *Vetor); void ImprimeVetor (int *Vetor); void SelectSort (int *Vetor); +void BubbleSort (int *Vetor); +void QuickSortRecursivo (int Vetor[], int Esquerda, int Direita); +void QuickSortIterativo (int Vetor[], int Esquerda, int Direita); void VerificaNumero (int *Vetor, int *Escolhidos); void PesquisaBinaria (int *Vetor, int Elem); diff --git a/Arquivos/Loteria b/Arquivos/Loteria index de5997e00e653a3e13ffce9849ebf96a0c075f61..f5cdde9c48e3384aa9ecd0c9209422479f765abc 100755 Binary files a/Arquivos/Loteria and b/Arquivos/Loteria differ diff --git a/Arquivos/Main.c b/Arquivos/Main.c index 0f7aa867d3ce2784bad897cdbab95f3de8a2080f..a927373764d4520bb6225b5b079b77b0ae16eb73 100644 --- a/Arquivos/Main.c +++ b/Arquivos/Main.c @@ -1,6 +1,7 @@ #include "Estruturas.h" #include "Funções.h" +//Calcula o Tempo da Execução do SelectSort void TempoSelectSort (int *Vetor) { struct timeval inicio, final; int tmili, i; @@ -15,6 +16,7 @@ void TempoSelectSort (int *Vetor) { printf ("O SelectSort Demorou %d Centesimos\n", tmili); } +//Calcula o Tempo da Execução do BubbleSort void TempoBubbleSort (int *Vetor) { struct timeval inicio, final; int tmili, i; @@ -29,6 +31,7 @@ void TempoBubbleSort (int *Vetor) { printf ("O BubbleSort Demorou %d Centesimos\n", tmili); } +//Calcula o Tempo da Execução do QuickSort Recursivo void TempoQuickSortRecursivo (int *Vetor) { struct timeval inicio, final; int tmili, i; @@ -43,6 +46,7 @@ void TempoQuickSortRecursivo (int *Vetor) { printf ("O QuickSort Recursivo Demorou %d Centesimos\n", tmili); } +//Calcula o Tempo da Execução do QuickSort Iterativo void TempoQuickSortIterativo (int *Vetor) { struct timeval inicio, final; int tmili, i; @@ -61,36 +65,45 @@ int main () { int Vetor[TAM], Escolhidos[4]; int comando, Ordena; - printf ("1 Para Jogar e 2 Para Comparar Algoritmos\n"); + printf ("1 - Jogar\n2 - Comparar Algortimos\n"); scanf ("%d", &comando); switch (comando) { - case 1: + case 1: LerDados (Escolhidos); GeraVetor (Vetor); + //Sorteia o Algoritmo para Ordenar o Vetor srand (time (NULL)); - Ordena = rand() % 3; + Ordena = rand() % 4; + switch (Ordena) { - case 0: - printf ("O Vetor Foi Ordenado Pelo SelectSort\n"); - SelectSort (Vetor); - break; - case 1: - printf ("O Vetor Foi Ordenado Pelo BubbleSort\n"); - BubbleSort (Vetor); - break; - case 2: - printf ("O Vetor Foi Ordenado Pelo QuickSort Recursivo\n"); - QuickSortRecursivo (Vetor, 0, TAM); - break; - case 3: - printf ("O Vetor Foi Ordenado Pelo QuickSort Iterativo\n"); - QuickSortIterativo (Vetor, 0, TAM); - break; + + case 0: + printf ("O Vetor Foi Ordenado Pelo SelectSort\n"); + SelectSort (Vetor); + break; + + case 1: + printf ("O Vetor Foi Ordenado Pelo BubbleSort\n"); + BubbleSort (Vetor); + break; + + case 2: + printf ("O Vetor Foi Ordenado Pelo QuickSort Recursivo\n"); + QuickSortRecursivo (Vetor, 0, TAM); + break; + + case 3: + printf ("O Vetor Foi Ordenado Pelo QuickSort Iterativo\n"); + QuickSortIterativo (Vetor, 0, TAM); + break; } + //Chama a Pesquisa VerificaNumero (Vetor, Escolhidos); ImprimeVetor (Vetor); break; - case 2: + + //Tempo de Execução dos programas + case 2: TempoSelectSort (Vetor); TempoBubbleSort (Vetor); TempoQuickSortRecursivo (Vetor); diff --git "a/Arquivos/Ordena\303\247\303\243o.c" "b/Arquivos/Ordena\303\247\303\243o.c" index 515df4b64415c10fdcc84fc86df205a102896a00..88a03280e9c029e9b9a00f54d334b711316e0ee6 100644 --- "a/Arquivos/Ordena\303\247\303\243o.c" +++ "b/Arquivos/Ordena\303\247\303\243o.c" @@ -1,7 +1,7 @@ //Arquivo com os Algoritmos de Ordenação #include "Estruturas.h" - +//Função para trocar valores void Troca (int *Vetor, int i, int j) { int aux; @@ -10,6 +10,7 @@ void Troca (int *Vetor, int i, int j) { Vetor [j] = aux; } +//Algoritmo de Ordenação do SelectSort void SelectSort (int *Vetor) { int i, j, menor; @@ -22,6 +23,7 @@ void SelectSort (int *Vetor) { } } +//Algoritmo de Ordenação do BubbleSort void BubbleSort (int *Vetor) { bool trocou; int i; @@ -38,6 +40,7 @@ void BubbleSort (int *Vetor) { } } +//Acha a posicao da Mediana int Mediana(int *Vetor, int esq, int dir) { int aux; aux = (dir+esq)/2; // elem. do meio do vetor @@ -64,6 +67,7 @@ int Mediana(int *Vetor, int esq, int dir) { } +//Particiona o QuickSort int Particao (int *Vetor, int esq, int dir) { int i,j,pivo,aux; aux = Mediana(Vetor,esq,dir); @@ -87,6 +91,7 @@ int Particao (int *Vetor, int esq, int dir) { return j; } +//Algoritmo de Ordenação do QuickSort com Recursão void QuickSortRecursivo (int Vetor[], int Esquerda, int Direita) { int pospivo; if (Esquerda < Direita) { @@ -95,32 +100,33 @@ void QuickSortRecursivo (int Vetor[], int Esquerda, int Direita) { QuickSortRecursivo(Vetor,pospivo+1,Direita); } } + +//Algoritmo de Ordenação do QuickSort Iterativo void QuickSortIterativo (int Vetor[], int Esquerda, int Direita) { - int Posicao; - int Pilha[ Direita - Esquerda + 1 ]; - int top; - - top = -1; - Pilha[ ++top ] = Esquerda; - Pilha[ ++top ] = Direita; - - while ( top >= 0 ) - { - Direita = Pilha[ top-- ]; - Esquerda = Pilha[ top-- ]; - - Posicao = Particao( Vetor, Esquerda, Direita ); - - if ( Posicao-1 > Esquerda ) - { - Pilha[ ++top ] = Esquerda; - Pilha[ ++top ] = Posicao - 1; - } - - if ( Posicao+1 < Direita ) - { - Pilha[ ++top ] = Posicao + 1; - Pilha[ ++top ] = Direita; - } + int Posicao; + int Pilha[TAM]; + int top; + + top = -1; + //Empilha os Indices + Pilha[++top] = Esquerda; + Pilha[++top] = Direita; + while (top >= 0) { + //Desempilha os Indices + Direita = Pilha[top--]; + Esquerda = Pilha[top--]; + + Posicao = Particao(Vetor, Esquerda, Direita); + + if (Posicao-1 > Esquerda) { + //Empilha os Indices + Pilha[++top] = Esquerda; + Pilha[++top] = Posicao - 1; + } + if (Posicao+1 < Direita) { + //Empilha os Indices + Pilha[++top] = Posicao + 1; + Pilha[++top] = Direita; + } } } diff --git a/Arquivos/Pesquisa.c b/Arquivos/Pesquisa.c index 9e33b412a86a8809e8694bcfc713ef810afd68cf..c6f88e80387fc225536d7bba587c586de22537e5 100644 --- a/Arquivos/Pesquisa.c +++ b/Arquivos/Pesquisa.c @@ -1,6 +1,7 @@ //Arquivo com os algoritmos de busca #include "Estruturas.h" +//Algoritmo de Pesquisa Binaria int PesquisaBinaria (int *Vetor, int Elem) { int meio, esquerda, direita; @@ -20,6 +21,7 @@ int PesquisaBinaria (int *Vetor, int Elem) { return -1; //return = -1 pq o se o elemento estiver na primeira posição irá retornar 0 (posição que ele se encontra no vetor) } +//Algoritmo de Pesquisa Sequencial int PesquisaSequencial(int *Vetor, int Elem) { int i; @@ -30,7 +32,7 @@ int PesquisaSequencial(int *Vetor, int Elem) { return -1; //-1 pq o elemento pode estar na posição zero } - +//Chama as funções de Pesqusia para procurar o número no vetor void VerificaNumero (int *Vetor, int *Escolhidos) { int i, acertos; diff --git a/Arquivos/Vetor.c b/Arquivos/Vetor.c index 30c6fb824e63f3606e53560ab3bc561f1879b41d..365ff3952bbf04efd07c0c177ac4566e288d3744 100644 --- a/Arquivos/Vetor.c +++ b/Arquivos/Vetor.c @@ -1,5 +1,6 @@ #include "Estruturas.h" +//Lê os 4 números que o usuario entra void LerDados (int *Vetor) { int i; printf ("Digite 4 números: ");