Commit 3895fbcd authored by Leonardo Krambeck's avatar Leonardo Krambeck

implementa quicksort basico com pivo no fim

parent 8c027e39
......@@ -5,7 +5,7 @@
#include "lib_ordena.h"
#define MAX_IT 5
#define TAM_VETOR 100
#define TAM_VETOR 30
double timestamp(void)
{
......@@ -30,7 +30,7 @@ int main () {
imprime_vetor (v, tam);
ini = timestamp();
quicksort_inicio (v,0,tam-1);
quicksort_fim (v,0,tam-1);
fim = timestamp();
soma_tempo += (fim-ini);
......@@ -39,7 +39,7 @@ int main () {
embaralha_vetor (v,tam);
}
printf("Tempo medio do quicksort: %f segundos.\n", soma_tempo/MAX_IT);
printf("\nTempo medio do quicksort: %f segundos.\n", soma_tempo/MAX_IT);
return 0;
}
......@@ -46,14 +46,13 @@ void embaralha_vetor (int v[], int tam) {
}
}
void intercala (int v[], int ini, int meio, int fim) {
printf("implementar intercala\n");
void inserctionsort (int v[], int ini, int fim) {
printf("implementar insertionsort\n");
}
/* particiona com pivo no inicio */
int particiona_inicio (int v[], int ini, int fim)
{
/* particiona com pivo no inicio */
int pivo, i, j;
pivo = v[ini];
......@@ -61,7 +60,6 @@ int particiona_inicio (int v[], int ini, int fim)
for ( j=i; j <= fim; j++ )
{
/* menores a esquerda e maiores ou iguais a direita */
if ( v[j] < pivo )
{
troca (v, i, j);
......@@ -74,10 +72,6 @@ int particiona_inicio (int v[], int ini, int fim)
return i-1;
}
void inserctionsort (int v[], int ini, int fim) {
printf("implementar insertionsort\n");
}
void quicksort_inicio (int v[], int ini, int fim)
{
int pivo;
......@@ -90,6 +84,44 @@ void quicksort_inicio (int v[], int ini, int fim)
}
}
/* particiona com pivo no fim */
int particiona_fim (int v[], int ini, int fim)
{
int pivo, i, j;
pivo = v[fim];
i = ini;
for ( j=i; j < fim; j++ )
{
if ( v[j] < pivo )
{
troca (v, i, j);
i++;
}
}
troca (v, fim, i);
return i;
}
void quicksort_fim (int v[], int ini, int fim)
{
int pivo;
if (ini < fim)
{
pivo = particiona_fim (v, ini, fim);
quicksort_fim (v, ini, pivo-1);
quicksort_fim (v, pivo+1, fim);
}
}
void intercala (int v[], int ini, int meio, int fim) {
printf("implementar intercala\n");
}
void mergesort (int v[], int ini, int fim) {
printf("implementar mergesort\n");
}
......
#define MAX 100000000
void gera_vetor_randomico (int v[], int tam);
void gera_vetor_em_ordem (int v[], int tam);
void embaralha_vetor (int v[], int tam);
void imprime_vetor (int v[], int tam);
void troca (int v[], int i, int j);
void intercala (int v[], int ini, int meio, int fim);
int particiona_inicio (int v[], int ini, int fim);
void insertionsort (int v[], int ini, int fim);
void quicksort_inicio (int v[], int ini, int fim);
void mergesort (int v[], int ini, int fim);
void gera_vetor_randomico (int v[], int tam);
void gera_vetor_em_ordem (int v[], int tam);
void embaralha_vetor (int v[], int tam);
void imprime_vetor (int v[], int tam);
void troca (int v[], int i, int j);
void insertionsort (int v[], int ini, int fim);
int particiona_inicio (int v[], int ini, int fim);
void quicksort_inicio (int v[], int ini, int fim);
int particiona_fim (int v[], int ini, int fim);
void quicksort_fim (int v[], int ini, int fim);
void intercala (int v[], int ini, int meio, int fim);
void mergesort (int v[], int ini, int fim);
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