Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Q
QuickSort e MergeSort - Algoritmos 2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Leonardo Krambeck
QuickSort e MergeSort - Algoritmos 2
Commits
c462147e
Commit
c462147e
authored
Oct 16, 2019
by
Leonardo Krambeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
melhorado1 = teste de ordenacao, melhorado2 = usando so 1 v_aux, adiciona log de insertion
parent
4c224010
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
81 additions
and
49 deletions
+81
-49
analise.c
analise.c
+4
-4
insertion_comparison.log
insertion_comparison.log
+36
-0
lib_ordena.c
lib_ordena.c
+34
-45
quick_vs_merge.log
quick_vs_merge.log
+7
-0
No files found.
analise.c
View file @
c462147e
...
...
@@ -17,8 +17,8 @@ int main () {
/* Mude aqui o numero de iterações, tamanho maximo e nome do algoritmo */
int
MAX_IT
=
100
;
int
TAM_MAX
=
100000
;
char
*
algoritmo
=
"
insertionsort
(R)"
;
int
TAM_MAX
=
100000
0
;
char
*
algoritmo
=
"
mergesort_melhorado2
(R)"
;
for
(
tam
=
10
;
tam
<=
TAM_MAX
;
tam
*=
10
)
{
...
...
@@ -36,7 +36,7 @@ int main () {
ini
=
timestamp
();
/* Mude aqui o algoritmo usado */
insertionsort
(
v
,
0
,
tam
-
1
);
mergesort_melhorado
(
v
,
0
,
tam
-
1
);
fim
=
timestamp
();
soma_tempo
+=
(
fim
-
ini
);
...
...
@@ -45,7 +45,7 @@ int main () {
embaralha_vetor
(
v
,
tam
);
}
printf
(
"Algoritmo: %25s | Iterações: %
5
d | Tamanho: %10d | Tempo: %15f milisegundos.
\n
"
,
algoritmo
,
MAX_IT
,
tam
,
soma_tempo
/
MAX_IT
);
printf
(
"Algoritmo: %25s | Iterações: %
7
d | Tamanho: %10d | Tempo: %15f milisegundos.
\n
"
,
algoritmo
,
MAX_IT
,
tam
,
soma_tempo
/
MAX_IT
);
free
(
v
);
...
...
insertion_comparison.log
0 → 100644
View file @
c462147e
Algoritmo: insertionsort (R) | Iterações: 1000000 | Tamanho: 10 | Tempo: 0.000253 milisegundos.
Algoritmo: insertionsort (R) | Iterações: 1000000 | Tamanho: 20 | Tempo: 0.000651 milisegundos.
Algoritmo: insertionsort (R) | Iterações: 1000000 | Tamanho: 30 | Tempo: 0.001202 milisegundos.
Algoritmo: insertionsort (R) | Iterações: 1000000 | Tamanho: 40 | Tempo: 0.001922 milisegundos.
Algoritmo: insertionsort (R) | Iterações: 1000000 | Tamanho: 50 | Tempo: 0.002805 milisegundos.
Algoritmo: quicksort_mediana3 (R) | Iterações: 1000000 | Tamanho: 10 | Tempo: 0.000580 milisegundos.
Algoritmo: quicksort_mediana3 (R) | Iterações: 1000000 | Tamanho: 20 | Tempo: 0.001432 milisegundos.
Algoritmo: quicksort_mediana3 (R) | Iterações: 1000000 | Tamanho: 30 | Tempo: 0.002359 milisegundos.
Algoritmo: quicksort_mediana3 (R) | Iterações: 1000000 | Tamanho: 40 | Tempo: 0.003291 milisegundos.
Algoritmo: quicksort_mediana3 (R) | Iterações: 1000000 | Tamanho: 50 | Tempo: 0.004255 milisegundos.
Algoritmo: mergesort_basico (R) | Iterações: 1000000 | Tamanho: 10 | Tempo: 0.000859 milisegundos.
Algoritmo: mergesort_basico (R) | Iterações: 1000000 | Tamanho: 20 | Tempo: 0.001973 milisegundos.
Algoritmo: mergesort_basico (R) | Iterações: 1000000 | Tamanho: 30 | Tempo: 0.003167 milisegundos.
Algoritmo: mergesort_basico (R) | Iterações: 1000000 | Tamanho: 40 | Tempo: 0.004464 milisegundos.
Algoritmo: mergesort_basico (R) | Iterações: 1000000 | Tamanho: 50 | Tempo: 0.005841 milisegundos.
Algoritmo: quicksort_inicio (R) | Iterações: 1000000 | Tamanho: 10 | Tempo: 0.000475 milisegundos.
Algoritmo: quicksort_inicio (R) | Iterações: 1000000 | Tamanho: 20 | Tempo: 0.001170 milisegundos.
Algoritmo: quicksort_inicio (R) | Iterações: 1000000 | Tamanho: 30 | Tempo: 0.002102 milisegundos.
Algoritmo: quicksort_inicio (R) | Iterações: 1000000 | Tamanho: 40 | Tempo: 0.003168 milisegundos.
Algoritmo: quicksort_inicio (R) | Iterações: 1000000 | Tamanho: 50 | Tempo: 0.003643 milisegundos.
Algoritmo: quicksort_meio (R) | Iterações: 1000000 | Tamanho: 10 | Tempo: 0.000509 milisegundos.
Algoritmo: quicksort_meio (R) | Iterações: 1000000 | Tamanho: 20 | Tempo: 0.001343 milisegundos.
Algoritmo: quicksort_meio (R) | Iterações: 1000000 | Tamanho: 30 | Tempo: 0.002344 milisegundos.
Algoritmo: quicksort_meio (R) | Iterações: 1000000 | Tamanho: 40 | Tempo: 0.003331 milisegundos.
Algoritmo: quicksort_meio (R) | Iterações: 1000000 | Tamanho: 50 | Tempo: 0.004097 milisegundos.
Algoritmo: quicksort_fim (R) | Iterações: 1000000 | Tamanho: 10 | Tempo: 0.000422 milisegundos.
Algoritmo: quicksort_fim (R) | Iterações: 1000000 | Tamanho: 20 | Tempo: 0.001105 milisegundos.
Algoritmo: quicksort_fim (R) | Iterações: 1000000 | Tamanho: 30 | Tempo: 0.001833 milisegundos.
Algoritmo: quicksort_fim (R) | Iterações: 1000000 | Tamanho: 40 | Tempo: 0.002651 milisegundos.
Algoritmo: quicksort_fim (R) | Iterações: 1000000 | Tamanho: 50 | Tempo: 0.003793 milisegundos.
lib_ordena.c
View file @
c462147e
...
...
@@ -305,6 +305,17 @@ void copia_vetor (int v[], int aux[], int ini, int fim)
}
}
void
copia_vetor2
(
int
v
[],
int
aux
[],
int
ini
,
int
fim
)
{
int
i
,
tam
=
fim
-
ini
+
1
;
for
(
i
=
0
;
i
<
tam
;
i
++
)
{
v
[
ini
]
=
aux
[
i
];
ini
++
;
}
}
/* intercala sem melhorias */
void
intercala_basico
(
int
v
[],
int
ini
,
int
meio
,
int
fim
)
{
...
...
@@ -370,48 +381,48 @@ void mergesort_basico (int v[], int ini, int fim)
void
intercala_melhorado
(
int
v
[],
int
ini
,
int
meio
,
int
fim
)
{
/* implementar passar o vetor por parametro */
int
tam_esq
=
meio
-
ini
+
1
;
int
tam_dir
=
fim
-
meio
;
int
esquerdo
[
tam_esq
],
direito
[
tam_dir
];
int
tam_aux
=
fim
-
ini
+
1
;
int
aux
[
tam_aux
];
copia_vetor
(
v
,
esquerdo
,
ini
,
meio
);
copia_vetor
(
v
,
direito
,
meio
+
1
,
fim
);
int
i
=
0
;
int
j
=
0
;
int
i
=
ini
;
int
j
=
meio
+
1
;
int
k
=
0
;
/* intercala entre
os dois vetores auxiliares
*/
while
(
(
i
<
tam_esq
)
&&
(
j
<
tam_dir
)
)
/* intercala entre
as duas seções do vetor aux
*/
while
(
(
i
<
=
meio
)
&&
(
j
<=
fim
)
)
{
if
(
esquerdo
[
i
]
<
direito
[
j
]
)
if
(
v
[
i
]
<
v
[
j
]
)
{
v
[
ini
]
=
esquerdo
[
i
];
aux
[
k
]
=
v
[
i
];
i
++
;
}
else
{
v
[
ini
]
=
direito
[
j
];
aux
[
k
]
=
v
[
j
];
j
++
;
}
ini
++
;
k
++
;
}
/* copia o restante do vetor que ainda houver elementos */
while
(
i
<
tam_esq
)
while
(
i
<
=
meio
)
{
v
[
ini
]
=
esquerdo
[
i
];
aux
[
k
]
=
v
[
i
];
i
++
;
ini
++
;
k
++
;
}
while
(
j
<
tam_dir
)
while
(
j
<
=
fim
)
{
v
[
ini
]
=
direito
[
j
];
aux
[
k
]
=
v
[
j
];
j
++
;
ini
++
;
k
++
;
}
copia_vetor2
(
v
,
aux
,
ini
,
fim
);
}
/* testa se duas particoes do merge já estao ordenadas */
...
...
@@ -423,15 +434,6 @@ int esta_ordenado (int v[], int meio)
return
0
;
}
/* 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
;
return
0
;
}
/* mergesort com melhorias */
void
mergesort_melhorado
(
int
v
[],
int
ini
,
int
fim
)
{
...
...
@@ -440,22 +442,9 @@ void mergesort_melhorado (int v[], int ini, int fim)
if
(
ini
<
fim
)
{
if
(
esta_ordenado
(
v
,
meio
))
printf
(
"ta ordenado lek
\n
"
);
/*else if (esta_invertido(v, ini, fim))
printf ("ta ordenado invertido lek\n");
falta inverter */
else
{
int
aux
[
fim
-
ini
+
1
];
copia_vetor
(
v
,
aux
,
ini
,
fim
);
mergesort_basico
(
v
,
ini
,
meio
);
mergesort_basico
(
aux
,
meio
+
1
,
fim
);
intercala_basico
(
v
,
ini
,
meio
,
fim
);
}
mergesort_melhorado
(
v
,
ini
,
meio
);
mergesort_melhorado
(
v
,
meio
+
1
,
fim
);
if
(
!
esta_ordenado
(
v
,
meio
))
intercala_melhorado
(
v
,
ini
,
meio
,
fim
);
}
}
quick_vs_merge.log
View file @
c462147e
...
...
@@ -38,3 +38,10 @@ Algoritmo: mergesort_melhorado1 (R) | Iterações: 100 | Tamanho: 1000
Algoritmo: mergesort_melhorado1 (R) | Iterações: 100 | Tamanho: 100000 | Tempo: 23.164280 milisegundos.
Algoritmo: mergesort_melhorado1 (R) | Iterações: 100 | Tamanho: 1000000 | Tempo: 271.175571 milisegundos.
Algoritmo: mergesort_melhorado2 (R) | Iterações: 100 | Tamanho: 10 | Tempo: 0.002358 milisegundos.
Algoritmo: mergesort_melhorado2 (R) | Iterações: 100 | Tamanho: 100 | Tempo: 0.038579 milisegundos.
Algoritmo: mergesort_melhorado2 (R) | Iterações: 100 | Tamanho: 1000 | Tempo: 0.242908 milisegundos.
Algoritmo: mergesort_melhorado2 (R) | Iterações: 100 | Tamanho: 10000 | Tempo: 1.882322 milisegundos.
Algoritmo: mergesort_melhorado2 (R) | Iterações: 100 | Tamanho: 100000 | Tempo: 22.596338 milisegundos.
Algoritmo: mergesort_melhorado2 (R) | Iterações: 100 | Tamanho: 1000000 | Tempo: 267.566848 milisegundos.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment