//Trabalho 1
//Autor: Pedro Henrique da Costa Braga
//DRE: 109062092
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int* vetor;
int tam;
//======================quickSort==========================================================
void troca(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int pivoteia(int v[],int antes,int depois)
{
int i,j;
i = antes;
for(j = antes + 1; j <= depois; j++)
{
if(v[j] < v[depois])
{
i++;
troca(&v[i], &v[j]);
}
}
troca(&v[antes], &v[i]);
return i;
}
void quickSort(int v[], int antes, int depois)
{
int pivo;
if(antes > depois)
{
pivo = pivoteia(v,antes,depois);
quickSort(v, antes, pivo - 1);
quickSort(v, pivo + 1, depois);
}
}
//=================================Função de Entrada================================================
void entrada()
{
int temp;
tam = 0;
while (scanf ("%d", &temp) != EOF)
{
tam++;
{
vetor =
(int *
)realloc
(vetor,
max*
sizeof(int
));
}
vetor[tam-1] = temp;
}
}
//==================================Função main=====================================================
int main (int argc, char *argv[])
{
if (argc < 3)
{
if(strcmp(argv
[1],
"-h") ==
0) //Ajuda
{
printf("\nAutor: Pedro Henrique da Costa Braga\n");
printf("Aqui se encontram implementados os algoritmos de quickSort e quickSelect. O programa utiliza os parametros da linha de comando para decidir o que fazer:\n");
printf("\n1) quick -h -> Imprime texto de ajuda;\n");
printf("\n2) quick -o k -> roda o quickSort, e depois imprime o valor na k-esima posicao;\n");
printf("\n3) quick -s k -> roda o quickSelect, e depois imprime o valor k-esima posicao;\n");
return 0;
}
else
{
printf("Parametro invalido\nDigite 'quick -h' para ver os comandos aceitados");
return 0;
}
}
else if(argc > 3)
{
printf("Parametro invalido\nDigite 'quick -h' para ver os comandos aceitados");
return 0;
}
else
{
if(strcmp(argv
[1],
"-o") ==
0) //quickSort
{
int i;
entrada();
// quickSort(vetor[],0,tam);
i = atoi(argv[2]);
}
else if(strcmp(argv
[1],
"-s") ==
0) //quickSelect
{
}
else
{
printf("Parametro invalido\nDigite 'quick -h' para ver os comandos aceitados");
}
return 0;
}
}