Commit 45aa6767 authored by Ivo Júnior's avatar Ivo Júnior
Browse files

Pilha adicionada e .h's tambem

parents c4b3efb5 14b70bad
File deleted
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXVETOR 16384
#include"loteria.h"
int vetorDes[MAXVETOR], vetorOrd[MAXVETOR];
void SelectSort(int vetor[MAXVETOR], int tam)
void SelectSort(int vetor[], int tam)
{
int i, j, min, aux;
......@@ -23,7 +18,7 @@ void SelectSort(int vetor[MAXVETOR], int tam)
}
}
void BubbleSort(int vetor[MAXVETOR], int tam)
void BubbleSort(int vetor[], int tam)
{
int i, j, aux;
......@@ -39,37 +34,34 @@ void BubbleSort(int vetor[MAXVETOR], int tam)
}
}
int Mediana(int vetor[MAXVETOR], int esq, int meio, int dir)
int Mediana(int vetor[], int esq, int meio, int dir)
{
/*int i, vetorAux[4];
vetorAux[1] = vetor[esq];
vetorAux[2] = vetor[meio];
vetorAux[3] = vetor[dir];
BubbleSort(vetorAux, 4);
if(vetorAux[2] == vetor[esq])
if((vetor[esq] >= vetor[dir]) && (vetor[esq] <= vetor[meio]))
return esq;
else if(vetorAux[2] == vetor[meio])
else if((vetor[dir] >= vetor[esq]) && (vetor[dir] <= vetor[meio]))
return dir;
else if((vetor[meio] >= vetor[esq]) && (vetor[meio] <= vetor[dir]))
return meio;
else
return dir;*/
return esq;
return meio;
}
void Particao(int vetor[MAXVETOR], int esq, int dir, int *posicaoPivo)
void Particao(int vetor[], int esq, int dir, int *posicaoPivo)
{
int i, j, pivo, aux;
int i, j, pivo, aux, mdn;
pivo = esq;
i = esq;
mdn = Mediana(vetor, esq, (esq + dir)/2, dir);
aux = vetor[esq];
vetor[esq] = vetor[mdn];
vetor[mdn] = aux;
pivo = vetor[esq]; //Mediana(vetor[esq], vetor[(esq + dir)/2], vetor[dir]);
i = esq;
j = dir;
while(i < j)
{
while((vetor[i] <= pivo) && (i < dir))
i++;
while(vetor[j] >= pivo)
while(vetor[j] > pivo)
j--;
if(i < j)
{
......@@ -83,7 +75,7 @@ void Particao(int vetor[MAXVETOR], int esq, int dir, int *posicaoPivo)
*posicaoPivo = j;
}
void QuickRec(int vetor[MAXVETOR], int esq, int dir)
void QuickRec(int vetor[], int esq, int dir)
{
int posicaoPivo;
......@@ -97,10 +89,23 @@ void QuickRec(int vetor[MAXVETOR], int esq, int dir)
void QuickIt()
{
tipoPilha pilha;
InicPilha(&pilha);
Push(&pilha, esq, dir);
while(!VaziaPilha(pilha))
{
int posicaoPivo;
tipoCoordenada auxC;
auxC = Pop(&pilha);
Particao(vetor, auxC.cesq, auxC.cdir, &posicaoPivo);
Push(&pilha, //TODO//
}
}
int PesqSec(int vetor[MAXVETOR], int tam, int elem)
int PesqSec(int vetor[], int tam, int elem)
{
int i;
......@@ -114,7 +119,7 @@ int PesqSec(int vetor[MAXVETOR], int tam, int elem)
return 0;
}
int PesqBin(int vetor[MAXVETOR], int elem, int esq, int dir)
int PesqBin(int vetor[], int elem, int esq, int dir)
{
int meio;
......@@ -134,7 +139,7 @@ void TempoExecucao()
}
void OrdenaVetor(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int ordenacao, int tam)
void OrdenaVetor(int vetorDes[], int vetorOrd[], int ordenacao, int tam)
{
int i;
......@@ -150,7 +155,7 @@ void OrdenaVetor(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int ordenacao,
BubbleSort(vetorOrd, tam);
break;
case 3:
QuickRec(vetorOrd, 1, tam - 1);
QuickRec(vetorOrd, 1, tam);
break;
case 4:
QuickIt();
......@@ -158,7 +163,7 @@ void OrdenaVetor(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int ordenacao,
}
}
void GeraVetor(int vetor[MAXVETOR], int tam, int numMax)
void GeraVetor(int vetor[], int tam, int numMax)
{
int i;
srand(time(NULL));
......@@ -166,7 +171,7 @@ void GeraVetor(int vetor[MAXVETOR], int tam, int numMax)
vetor[i] = (rand() % numMax) + 1;
}
void Setup(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int *tam, int *numMax)
void Setup(int vetorDes[], int vetorOrd[], int *tam, int *numMax)
{
int ordenacao;
......@@ -199,7 +204,7 @@ void Setup(int vetorDes[MAXVETOR], int vetorOrd[MAXVETOR], int *tam, int *numMax
OrdenaVetor(vetorDes, vetorOrd, ordenacao, *tam);
}
void ImprimeVetor(int vetor[MAXVETOR], int tam)
void ImprimeVetor(int vetor[], int tam)
{
int i;
printf("[");
......
#ifndef _LOTERIA_H
#define _LOTERIA_H
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"pilha.h"
#define MAXVETOR 16384
int vetorDes[MAXVETOR], vetorOrd[MAXVETOR];
void SelectSort(int vetor[], int tam);
void BubbleSort(int vetor[], int tam);
void QuickRec(int vetor[], int esq, int dir);
void QuickIt();
int PesqSec(int vetor[], int tam, int elem);
int PesqBin(int vetor[], int elem, int esq, int dir);
int Mediana(int vetor[], int esq, int meio, int dir);
void Particao(int vetor[], int esq, int dir, int *posicaoPivo);
void TempoExecucao();
void OrdenaVetor(int vetorDes[], int vetorOrd[], int ordenacao, int tam);
void GeraVetor(int vetor[], int tam, int numMax);
void Setup(int vetorDes[], int vetorOrd[], int *tam, int *numMax);
void ImprimeVetor(int vetor[], int tam);
#endif
#ifndef _PILHA_H
#define _PILHA_H
#include<stdin.io>
#define MAXPILHA 16862
typedef struct{
int cesq;
int cdir;
} tipoCoordenada;
typedef struct{
tipoCoordenada coordenada[MAXPILHA];
int topo;
}tipoPilha;
void InicPilha(tipoPilha *pilha)
{
pilha->topo = 0;
}
int VaziaPilha(tipoPilha pilha)
{
return (!pilha.topo);
}
void Push(tipoPilha *pilha, int esquerda, int direita)
{
pilha->topo++;
pilha->coordenada[pilha->topo].cesq = esquerda;
pilha->coordenada[pilha->topo].cdir = direita;
}
tipoCoordenada Pop(tipoPilha *pilha)
{
if(!VaziaPilha(*pilha))
{
tipoCoordenada c;
c.cesq = pilha->coordenada[pilha->topo].cesq;
c.cdir = pilha->coordenada[pilha->topo].cdir;
pilha->topo--;
return c;
}
}
#endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment