Commit 8c027e39 authored by Leonardo Krambeck's avatar Leonardo Krambeck

implementa quicksort basico com pivo no inicio

parent 81d0984f
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include "lib_ordena.h"
#define MAX_IT 5
#define TAM_VETOR 100
double timestamp(void)
{
struct timeval tp;
gettimeofday(&tp, NULL);
return((double)(tp.tv_sec*1000.0 + tp.tv_usec/1000.0));
}
int main () {
int i, tam;
double ini, fim, soma_tempo;
tam = TAM_VETOR;
int v[tam];
gera_vetor_randomico (v,tam);
soma_tempo = 0;
for (i=0; i<MAX_IT; i++)
{
printf ("\n");
imprime_vetor (v, tam);
ini = timestamp();
quicksort_inicio (v,0,tam-1);
fim = timestamp();
soma_tempo += (fim-ini);
imprime_vetor (v, tam);
embaralha_vetor (v,tam);
}
printf("Tempo medio do quicksort: %f segundos.\n", soma_tempo/MAX_IT);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "lib_ordena.h"
void imprime_vetor (int v[], int tam) {
int i;
for (i=0; i<tam-1; i++)
printf("%d ",v[i]);
printf("%d\n",v[tam-1]);
}
void troca (int v[], int i, int j) {
int aux;
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
void gera_vetor_em_ordem (int v[], int tam) {
int i;
for (i=0; i<tam; i++)
v[i] = i;
}
void gera_vetor_randomico (int v[], int tam) {
int i;
srand(time(0));
for (i=0; i<tam; i++)
v[i] = (unsigned int) (rand() % (tam*3)); /* pode modificar se quiser */
}
void embaralha_vetor (int v[], int tam) {
int k, i, j, max_trocas;
max_trocas = (unsigned int) (rand() % tam) + tam; /* pode modificar */
for (k=0; k<max_trocas; k++) {
i = (unsigned int) (rand() % tam);
j = (unsigned int) (rand() % tam);
troca (v,i,j);
}
}
void intercala (int v[], int ini, int meio, int fim) {
printf("implementar intercala\n");
}
int particiona_inicio (int v[], int ini, int fim)
{
/* particiona com pivo no inicio */
int pivo, i, j;
pivo = v[ini];
i = ini+1;
for ( j=i; j <= fim; j++ )
{
/* menores a esquerda e maiores ou iguais a direita */
if ( v[j] < pivo )
{
troca (v, i, j);
i++;
}
}
troca (v, ini, i-1);
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;
if (ini < fim)
{
pivo = particiona_inicio (v, ini, fim);
quicksort_inicio (v, ini, pivo-1);
quicksort_inicio (v, pivo+1, fim);
}
}
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);
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