Commit 81e92bc1 authored by Leonardo Krambeck's avatar Leonardo Krambeck

implementa insertion e faz com que analise.c teste para tamanhos crescentes

parent 3204fe04
......@@ -4,8 +4,7 @@
#include "lib_ordena.h"
#define MAX_IT 5
#define TAM_VETOR 50
#define LIMITE 1000000
double timestamp(void)
{
......@@ -18,28 +17,38 @@ int main () {
int i, tam;
double ini, fim, soma_tempo;
tam = TAM_VETOR;
int v[tam];
/* Mude aqui o numero de iterações e nome do algoritmo */
int MAX_IT = 100;
char *algoritmo = "mergesort_basico (R)";
gera_vetor_randomico (v,tam);
soma_tempo = 0;
for (i=0; i<MAX_IT; i++)
for ( tam=10; tam <= LIMITE; tam*=10 )
{
printf ("\n");
imprime_vetor (v, tam);
int *v;
v = (int*) malloc (tam * sizeof(int));
ini = timestamp();
mergesort_melhorado (v,0,tam-1);
fim = timestamp();
/* Mude aqui o tipo de entrada */
gera_vetor_randomico (v,tam);
soma_tempo += (fim-ini);
soma_tempo = 0;
for (i=0; i<MAX_IT; i++)
{
/*imprime_vetor (v, tam);*/
imprime_vetor (v, tam);
embaralha_vetor (v,tam);
}
ini = timestamp();
/* Mude aqui o algoritmo usado */
mergesort_basico (v,0,tam-1);
fim = timestamp();
soma_tempo += (fim-ini);
printf("\nTempo medio do quicksort: %f segundos.\n", soma_tempo/MAX_IT);
/*imprime_vetor (v, tam);*/
embaralha_vetor (v,tam);
}
printf("Algoritmo: %25s | Iterações: %5d | Tamanho: %10d | Tempo: %15f milisegundos.\n", algoritmo, MAX_IT, tam, soma_tempo/MAX_IT);
free (v);
}
return 0;
}
......@@ -47,8 +47,24 @@ void embaralha_vetor (int v[], int tam) {
}
}
void inserctionsort (int v[], int ini, int fim) {
printf("implementar insertionsort\n");
void insertionsort (int v[], int ini, int fim)
{
int i, j, chave;
int tam = fim - ini + 1;
for ( i=1; i<tam; i++ )
{
chave = v[i];
j = i-1;
while ( j >= 0 && chave < v[j] )
{
v[j+1] = v[j];
j--;
}
v[j+1] = chave;
}
}
/* particiona com pivo no inicio */
......@@ -293,8 +309,8 @@ int esta_ordenado (int v[], int meio)
/* testa se duas particoes do merge estão ordenadas invertidas */
int esta_invertido (int v[], int ini, int fim)
{
/*if ( v[ini] > v[fim] )
return 1; falta inverter */
if ( v[ini] > v[fim] )
return 1;
return 0;
}
......@@ -310,9 +326,9 @@ void mergesort_melhorado (int v[], int ini, int fim)
if (esta_ordenado(v, meio))
printf ("ta ordenado lek\n");
else if (esta_invertido(v, ini, fim))
/*else if (esta_invertido(v, ini, fim))
printf ("ta ordenado invertido lek\n");
/* falta inverter */
falta inverter */
else
{
......
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