From 3acc47127892498eff953e8e6c26d0127b89f439 Mon Sep 17 00:00:00 2001
From: vfa20 <vfa20@inf.ufpr.br>
Date: Sat, 16 Jul 2022 23:37:37 -0300
Subject: [PATCH] added more sorting algorithms tests

---
 t1/main.c | 165 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 t1/main.o | Bin 14936 -> 20584 bytes
 t1/trab   | Bin 26160 -> 26160 bytes
 3 files changed, 150 insertions(+), 15 deletions(-)

diff --git a/t1/main.c b/t1/main.c
index a7d6169..2b690b6 100644
--- a/t1/main.c
+++ b/t1/main.c
@@ -4,22 +4,25 @@
 
 #include "ordenacao.h"
 
-void imprimeVetor(int v[], int tam) {
+void imprimeVetor(int v[], int tamV) {
 	printf("\n[");
-	for (int i=0;i<20;i++) {
+	for (int i=0;i<10;i++) {
 		printf("%d ", v[i]);
 	}
-	printf("...%d]\n", v[tam-1]);
+	if (tamV > 10)
+		printf("...%d]\n", v[tamV-1]);
+	else 
+		printf("]\n");
 }
 
-void geraVetorAleatorio(int v[], int tam) {
-	for (int i=0;i<tam;i++) {
-		v[i] = rand() % 100 + 1;
+void geraVetorAleatorio(int v[], int tamV) {
+	for (int i=0;i<tamV;i++) {
+		v[i] = rand() % 10000 + 1;
 	}
 }
 
-void geraVetor(int v[], int tam) {
-	for (int i=0;i<tam;i++) {
+void geraVetor(int v[], int tamV) {
+	for (int i=0;i<tamV;i++) {
 		v[i] = i;
 	}
 }
@@ -47,7 +50,7 @@ int main(){
 
 
 	printf("----------------------------------------------------\n");
-	printf("Comecando os teste com os vetores de busca...\n");
+	printf("Comecando os teste com os algoritmos de busca...\n");
 	printf("----------------------------------------------------\n");
 
 	printf("\n--->BUSCA SEQUENCIAL\n");
@@ -129,10 +132,10 @@ int main(){
 	
 
 	printf("\n----------------------------------------------------\n");
-	printf("Comecando os teste com os vetores de ordenacao...\n");
+	printf("Comecando os teste com os algoritmos de ordenacao...\n");
 	printf("----------------------------------------------------\n");
 
- 	printf("\n--->INSERTION SORT\n");
+ 	printf("\n~~~>INSERTION SORT<~~~\n");
 
 	//TESTE 1
 	geraVetorAleatorio(vetor,tam);
@@ -181,15 +184,48 @@ int main(){
 	imprimeVetor(vetor, 50*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 
+	//TESTE 5
+	geraVetorAleatorio(vetor,100*tam);
+	printf("\nOrdenando um vetor tam = 1000");
+	imprimeVetor(vetor, 100*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = insertionSort(vetor,100*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 100*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 6
+	geraVetorAleatorio(vetor,500*tam);
+	printf("\nOrdenando um vetor tam = 5000");
+	imprimeVetor(vetor, 500*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = insertionSort(vetor,500*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 500*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 7
+	geraVetorAleatorio(vetor,1000*tam);
+	printf("\nOrdenando um vetor tam = 10000");
+	imprimeVetor(vetor, 1000*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = insertionSort(vetor,1000*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 1000*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
 	printf("\n");
 
 
- 	printf("\n--->SELECTION SORT\n");
+ 	printf("\n~~~>SELECTION SORT<~~~\n");
 
 	//TESTE 1
 	geraVetorAleatorio(vetor,tam);
 	printf("\nOrdenando um vetor tam = 10");
-	imprimeVetor(vetor, tam);
+	imprimeVetor(vetor,tam);
 	start = clock();//start recebe o "ciclo" corrente
 	numComp = selectionSort(vetor,tam);
 	end = clock();//end recebe o "ciclo" corrente
@@ -232,9 +268,42 @@ int main(){
 	imprimeVetor(vetor, 50*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 
+	//TESTE 5
+	geraVetorAleatorio(vetor,100*tam);
+	printf("\nOrdenando um vetor tam = 1000");
+	imprimeVetor(vetor, 100*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = selectionSort(vetor,100*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 100*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 6
+	geraVetorAleatorio(vetor,500*tam);
+	printf("\nOrdenando um vetor tam = 5000");
+	imprimeVetor(vetor, 500*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = selectionSort(vetor,500*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 500*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 7
+	geraVetorAleatorio(vetor,1000*tam);
+	printf("\nOrdenando um vetor tam = 10000");
+	imprimeVetor(vetor, 1000*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = selectionSort(vetor,1000*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 1000*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
 	printf("\n");
 
- 	printf("\n--->MERGE SORT\n");
+ 	printf("\n~~~>MERGE SORT<~~~\n");
 
 	//TESTE 1
 	geraVetorAleatorio(vetor,tam);
@@ -281,10 +350,43 @@ int main(){
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	imprimeVetor(vetor, 50*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 5
+	geraVetorAleatorio(vetor,100*tam);
+	printf("\nOrdenando um vetor tam = 1000");
+	imprimeVetor(vetor, 100*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = mergeSort(vetor,100*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 100*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 6
+	geraVetorAleatorio(vetor,500*tam);
+	printf("\nOrdenando um vetor tam = 5000");
+	imprimeVetor(vetor, 500*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = mergeSort(vetor,500*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 500*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 7
+	geraVetorAleatorio(vetor,1000*tam);
+	printf("\nOrdenando um vetor tam = 10000");
+	imprimeVetor(vetor, 1000*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = mergeSort(vetor,1000*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 1000*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 	
 	printf("\n");
 
- 	printf("\n--->QUICK SORT\n");
+ 	printf("\n~~~>QUICK SORT<~~~\n");
 
 	//TESTE 1
 	geraVetorAleatorio(vetor, tam);
@@ -331,6 +433,39 @@ int main(){
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	imprimeVetor(vetor, 50*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 5
+	geraVetorAleatorio(vetor,100*tam);
+	printf("\nOrdenando um vetor tam = 1000");
+	imprimeVetor(vetor, 100*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = quickSort(vetor,100*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 100*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 6
+	geraVetorAleatorio(vetor,500*tam);
+	printf("\nOrdenando um vetor tam = 5000");
+	imprimeVetor(vetor, 500*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = quickSort(vetor,500*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 500*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 7
+	geraVetorAleatorio(vetor,1000*tam);
+	printf("\nOrdenando um vetor tam = 10000");
+	imprimeVetor(vetor, 1000*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = quickSort(vetor,1000*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 1000*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 	
 	printf("\n");
 
diff --git a/t1/main.o b/t1/main.o
index 74333eb9a7492ad220eaee0324cafd606e7e546b..8de90053bd6e4e79e1a025d93d71717eec6ef36b 100644
GIT binary patch
literal 20584
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

literal 14936
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

diff --git a/t1/trab b/t1/trab
index 2c2f2482cccf472f2cd9ee7474170f07893d1485..63926ac198eb4def9de91b172ad7ce64079381f8 100755
GIT binary patch
delta 6400
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
W@Ju%6d;v-)3=9k}Hg_g3X958Im|$7}

delta 4136
zcmdmRh7p7~899|0z<^b0vJj&lX9NeB#}KjElTn{hFvl6fh0~KeneK~xNJ^X%skGaX
z>!3%1***Eo{p_>;Z?0jM=HpjjVDRYWy)O@<Y`-&ZUM8r($ShoUcJg^4X?}HG28JCV
z^IrJ<`~QE!WC0V=$uhzmijFU${{8>&k$k};^OAh)>p+i#uM|2j9{kBVQ}bfysq9NB
zlRbnr7`IO@6i%z}`TPI>an~7K3=9nW9p*4Fyy*V>|G!74>jIBn*8?7%$6u@z1lbK@
zAM@z7RndW2>HPQqe~9IK1sNDRL6YKdNi~om&9w^{N~Jw|Z8_lLd>~DX3=9k}ZNSFb
zI?3uVFuXYN=l_3?URzHPdk=)o3Sw`7u;W4OC4WE;odWW%N3U%f+{itXXNV}W9sc|O
z|BKSe`$goqx<Jlxo%6!)&tyY!DW)L3$pRAcDnGRu7<PbcexZ(HkRse5{y&o^h>J~*
z5tU%$0GYOHa+RnW*Kq*`hECTxFS>t&P3zYMn`Q<#E#)_|v)Vx7ASb@?`91ldmegcr
zF&TE-KmY%~c>ini1PKkUpZpNx_WqjuP)?dr2V|Ofh8E0i(|&;i;(-<e!;7fNr^Mux
zE`#L2CMN#+|GztQhDW#Sg3fE8n5q2z|Njf^Uy~1rh)$Ll=iusqI+f)Y*r^;~!<E--
z!VJIr6WOWPLE>P8k529v*Jt1N>;L~31wSWOi>h)Sg}TylvVpiXqw8dT2?dom8ZdLD
zP|UG`o5S=I?B!eu8Me<q|NnonbaKChCg*oPh>wdWAC!=0D%S$}xLyu!n9mQekFRPl
zFuV|euo*QO7+$bI*uLrv3@?6s2dj|=iNE=d777PYT*C`@&1ZCl+#omY1sT;T>AC_X
zBxi$@%#;@kzJo(<iRR>uk`hdte@vbzCCsxF?$+$@pcEp^@e}Nvg&=Wo06Kxi*@J)l
z|NnyZ`(y(tDXu%<xR~<d;Wv<pj87*!N{dduAkWSCcJc%%5uW?%u)tjU4HRg?b`bA=
z0f~dntN@F%wSNEq|AqPFzf$sCTu>wVAw~*Mc9d3O6bBjS#R<{|PTc3e{{P?YIwSjn
z5h9%wfc)HR>jF{)HhUEoMf<<~|No-!>tq2%F)kl)^iO#a_!aE<(8>R$WtbAbfkLA`
zSPkZK$*=$a?+29|FZO={2go)x28I`xzo5m>@^4_twIF?9+aIE<`1$q!{}-!4W^|&(
z%TB06`XG`UK6y;G6c=Keqy~<kg<nA~;+d=pb5Z0MaQuAx3bwHyBo4OG04&b#2(st%
zXK?)d0;kF;FV24kd6DU|>f{0`d8XT6z$Ttmftfh@GdOm1ASONniGxi{1B<g4fBFCa
zh3e<Y|D@!&G@vH_{RB3V5oDss<aet4Osrs2y}m2MOx^nlGm_#!UhK6sf?F{Ii=wrk
z|Nnmx{|OvPS-cDkovu?}*hB1dR+%It&E)?X<birexK-?*V3D-;BREv9Dl;&=IQS7Q
zlBRwJOU?%A1AFj1x{BwY{{Me56J!Q@B)x$~QVm2B7D)}t;7IEK1ac8iqY}*X?jOOC
z^yCxR##)d#*hV?9IJ-W`o`)Ymk;JJBHF@vkLIr82gG%5yI{6W7;BG~jfsG%)aU=yX
z@B&C2Y+wjjoIUa5|Nk$9KY-&X8X8Bh--F}mz2f8oDM%cB{s1!7>!||F)Yb1X<H!f(
z!(LkjxD{<!6wUtd|Njf$_ux313ymXPh<%2Npg6JxTUD<Qx9aOVSRBoM2M(0W3JeS{
z*1toGqvj7_$xe_yum|^|tGN39|Nj^5AT!Y82<GuDh$JkI@)W>vRQn#}d7gZEnCDI3
zf#c}Xd$5h!AaSsbJYaElS&%*F--6<ZYYx<ltKWiybiF({lD5ACo48UAW@7$Za3pa+
zOxy<&2b<^w7H9W=_y7M3#<$=|I>iG?*f-yRO}r}ykEDlhL8f|LmW7!*^9^PsS%JLR
zYs&|>q6CYg&bR;nzp#D-jwBwaebNy7<mEt-qz$%8NfvI^<JYiA>U{nGKd5j8Rl&Kh
zCl~06Gc9>Nxl>PpYnChn14z{C_2$ibM_HLRKb`EaFSmJyi2x&0^OMc1OdXh*93M@7
zWB#5g;Nj-G784mA_TK;h|K#B`J%0HXP<Sv*_{=Z&%Q4)i*Y>eC1A}9jXXiD?P|wb<
zjv<bne?mQab+2eMFa-N({`F{n!|}rZ-sbgIfvlSqI3BQXR^U)zoa7)b9#WK;l$eu|
zuaJ_epjynu;2spDpjyf`+03DZtt_=9zbJL`VFy)4hRx3$To`pBBE=xZ`9&$Id5Ou1
z`FeVK3|zXpx^|v^!LC6ep8kFc!Tv!Z3=ESGI*Cp$aq1EV%LcppxH`jSCm(c@Re)&o
zbq#WNg=hgQ3=H*j_6GAO?{l`Q-*V>ve;q~!hLp4a|A#O#FqEAA|38P3fkEWl|NkP4
z3=DtI{r}&>$iUEf{{R0aj0_B)&j0^^gpq;4_`?7HPZ${(lpg*6&%(sO5b@~$e-$PM
zhV)1O|GO|TFuZv5|9=V-1B3nJ|NmQ<7#Iwm{Qtj%iGe}w>Hq&nm>3v*pZ)*;go&Y^
z;o!6X|5=zB7;K*Z|F6Q#z_9%J|Nkz`3=G0A{{K&5W?;Df;{X2^W(Ef5m;e7SVP;@h
z_VWM#Bg_m8eXsxjf5XhcAoJ$`e;yVFhO#&R|Ld?YFvz|A|KEp&fno03|NnDX7#Kv}
z{r}&?!obk-?*IQQAU-&185kI=f*2SpCVz7glKgSz|9^duunW5Yh*Du-U@&1|U}%`E
z=&D}NapwPjurNr9fq_AUfq|g}#6I)?{{j#V#WD;G3_T1C425U^{|C_wu6zP*OwPP)
zOwBy(91IK~`85m-40q4||DOrc1D8*L%b#IjU{E{v|Gy(be)4fwK_&Nd|Np-iWMF`s
z$^1+ZqzPmu4<iGE*n`QxT;-T_9!!>UlVg&8FxkpYj;ZFs<R~{erp*r~SGmbCwLF|W
z%T10c>e1v~ZgNbCk0;-9lVjTYc=9hdIVOQ8lcn6{n4+IdwsMzaTK;5ml)D_0_tVK$
z?s81ipH80TF2{81>EvDRYW1_8|Nq~Ia2ziiQ!B_FV9$v#Gca(x`2Rl&MLrNNZ^F#L
z;Pm4E{}m|m^WpL#%nS^tUi|-Gk0M_NmoH&vP-f74`Tu_oih^XY0v84bhAGSp3=J<Q
zH+i_Rta$nV|KyJW!kZO11X(8+_*ya=ZeHbU&cbLo`B9)AW6os3AaTZw&6+{S85u(+
ze+({X%$b}S;=yP*c~giR(`vQJze38Sj;MkxVqoBhPz*~M85o2Z1Q;%>PVNeIXEdCA
zDb$V0S!c3TSe(&UA&4Sy%rY=Aq%%R(PSSvgtAkpE3=9mpQ1L$1$*aQjm_pPh-wJc9
z*VTfks)kSu+o7uBgdqap^uWNta1biq0Zy(A4B((<U|={66|dKZs6PUs7#>2!g>)eT
zFQBe?4i#@O1dC6eA0Fu?4Alz`T?PgQNoI%-RzTgB4OYs)pbr&)1a$*AIvE%ktfAt+
z^d>t+=y}bDIvt#B85kJipwjDgAm$`PD27z1I48s@3^42Sq2fC=C+~`o69VTb1_p*E
zsBo9T<W~`TOmoyXOGTD*GAc}-l%x+c;)mhnQ%P=&S(62m^*Irpd(UKZ&J0jGVPIg$
K*xZ@CoCyHTpypTr

-- 
GitLab