From 014302c1efdfa3a106dab18aa3265e31a7814d94 Mon Sep 17 00:00:00 2001
From: vfa20 <vfa20@inf.ufpr.br>
Date: Sat, 16 Jul 2022 22:03:44 -0300
Subject: [PATCH] insertion sort fixed

---
 t1/main.c      | 255 ++++++++++++++++++++++++++++---------------------
 t1/main.o      | Bin 12888 -> 14936 bytes
 t1/makefile    |   2 +-
 t1/ordenacao.c |  52 ++++++++--
 t1/ordenacao.o | Bin 6872 -> 7328 bytes
 t1/trab        | Bin 0 -> 26160 bytes
 6 files changed, 192 insertions(+), 117 deletions(-)
 create mode 100755 t1/trab

diff --git a/t1/main.c b/t1/main.c
index 3848683..a7d6169 100644
--- a/t1/main.c
+++ b/t1/main.c
@@ -6,7 +6,7 @@
 
 void imprimeVetor(int v[], int tam) {
 	printf("\n[");
-	for (int i=0;i<10;i++) {
+	for (int i=0;i<20;i++) {
 		printf("%d ", v[i]);
 	}
 	printf("...%d]\n", v[tam-1]);
@@ -14,7 +14,7 @@ void imprimeVetor(int v[], int tam) {
 
 void geraVetorAleatorio(int v[], int tam) {
 	for (int i=0;i<tam;i++) {
-		v[i] = rand() % 100000 + 1;
+		v[i] = rand() % 100 + 1;
 	}
 }
 
@@ -34,8 +34,8 @@ int main(){
 
 	//Dica: somente é posśivel criar vetores grandes utilizando alocação dinâmica de memória
 	//Veja um exemplo de alocação dinâmica a seguir
-	int tamVetor = 10000;
-	int* vetor = malloc(tamVetor * sizeof(int));
+	int tam = 10;
+	int* vetor = malloc(10000 * sizeof(int));
 	getNome(nome);
 	printf("Trabalho de %s\n", nome);
 	printf("GRR %u\n", getGRR());
@@ -45,11 +45,6 @@ int main(){
 		return 1;
 	}
 
-	int* vetor1 = malloc(tamVetor * sizeof(int));
-	if(vetor1 == NULL){
-		printf("Falha fatal. Impossível alocar memoria.");
-		return 1;
-	}
 
 	printf("----------------------------------------------------\n");
 	printf("Comecando os teste com os vetores de busca...\n");
@@ -59,79 +54,79 @@ int main(){
 
 	//TESTE 1
 	numComp=0;	
-	printf("\nbuscando o valor -6 no vetor...");
-	geraVetor(vetor,100);
-	imprimeVetor(vetor, 100);
+	printf("\nbuscando o valor -5 no vetor...");
+	geraVetor(vetor,tam);
+	imprimeVetor(vetor, tam);
 	start = clock();//start recebe o "ciclo" corrente
-	idxBusca = buscaSequencial(vetor,100, -6, &numComp);
+	idxBusca = buscaSequencial(vetor,tam, -5, &numComp);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	printf("(Encontrado no indice: %d | Nº de comp: %d | Tempo total: %f)\n", idxBusca, numComp, total);
  
-
+	
  	//TESTE 2
 	numComp=0;
- 	printf("\nbuscando o valor 100 no vetor...");
-	geraVetor(vetor,1000);
-	imprimeVetor(vetor, 1000);
+ 	printf("\nbuscando o valor 14 no vetor...");
+	geraVetor(vetor,5*tam);
+	imprimeVetor(vetor, 5*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	idxBusca = buscaSequencial(vetor,1000, 100, &numComp);
+	idxBusca = buscaSequencial(vetor,5*tam, 14, &numComp);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	printf("(Encontrado no indice: %d | Nº de comp: %d | Tempo total: %f)\n", idxBusca, numComp, total);
  
-
+	
  	//TESTE 3
 	numComp=0;
- 	printf("\nbuscando o valor 7500 no vetor...");
-	geraVetor(vetor,10000);
-	imprimeVetor(vetor, 10000);
+ 	printf("\nbuscando o valor 43 no vetor...");
+	geraVetor(vetor,10*tam);
+	imprimeVetor(vetor, 10*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	idxBusca = buscaSequencial(vetor,10000, 7500, &numComp);
+	idxBusca = buscaSequencial(vetor,10*tam, 43, &numComp);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	printf("(Encontrado no indice: %d | Nº de comp: %d | Tempo total: %f)\n", idxBusca, numComp, total);
- 
+ 	
 
 
  	printf("\n--->BUSCA BINARIA\n");
-	geraVetor(vetor,100);
+	geraVetor(vetor,tam);
 
 
 	//TESTE 1
 	numComp=0;	
 	printf("\nbuscando o valor -6 no vetor...");
-	imprimeVetor(vetor, 100);
+	imprimeVetor(vetor, tam);
 	start = clock();//start recebe o "ciclo" corrente
-	idxBusca = buscaBinaria(vetor,100, -6, &numComp);
+	idxBusca = buscaBinaria(vetor,tam, -6, &numComp);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	printf("(Encontrado no indice: %d | Nº de comp: %d | Tempo total: %f)\n", idxBusca, numComp, total);
  
-
+	
  	//TESTE 2
 	numComp=0;
- 	printf("\nbuscando o valor 100 no vetor...");
-	geraVetor(vetor,1000);
-	imprimeVetor(vetor, 1000);
+ 	printf("\nbuscando o valor 14 no vetor...");
+	geraVetor(vetor,5*tam);
+	imprimeVetor(vetor, 5*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	idxBusca = buscaBinaria(vetor,1000, 100, &numComp);
+	idxBusca = buscaBinaria(vetor,5*tam, 14, &numComp);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	printf("(Encontrado no indice: %d | Nº de comp: %d | Tempo total: %f)\n", idxBusca, numComp, total);
  
-
+	
  	//TESTE 3
 	numComp=0;
- 	printf("\nbuscando o valor 2500 no vetor...");
-	geraVetor(vetor,10000);
-	imprimeVetor(vetor, 10000);
+ 	printf("\nbuscando o valor 43 no vetor...");
+	geraVetor(vetor,10*tam);
+	imprimeVetor(vetor, 10*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	idxBusca = buscaBinaria(vetor,10000, 2500, &numComp);
+	idxBusca = buscaBinaria(vetor,10*tam, 43, &numComp);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
 	printf("(Encontrado no indice: %d | Nº de comp: %d | Tempo total: %f)\n", idxBusca, numComp, total);
-
+	
 
 	printf("\n----------------------------------------------------\n");
 	printf("Comecando os teste com os vetores de ordenacao...\n");
@@ -140,38 +135,50 @@ int main(){
  	printf("\n--->INSERTION SORT\n");
 
 	//TESTE 1
-	geraVetorAleatorio(vetor,10);
-	printf("\nOrdenando um vetor tam = 100");
-	imprimeVetor(vetor, 10);
+	geraVetorAleatorio(vetor,tam);
+	numComp=0;
+	printf("\nOrdenando um vetor de tam = 10");
+	imprimeVetor(vetor, tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = insertionSort(vetor,10);
+	numComp = insertionSort(vetor,tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 10);
+	imprimeVetor(vetor, tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
  
-
+	
 	//TESTE 2
-	geraVetorAleatorio(vetor,1000);
-	printf("\nOrdenando um vetor tam = 1000");
-	imprimeVetor(vetor, 1000);
+	geraVetorAleatorio(vetor,5*tam);
+	printf("\nOrdenando um vetor tam = 50");
+	imprimeVetor(vetor, 5*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = insertionSort(vetor,1000);
+	numComp = insertionSort(vetor,5*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 1000);
+	imprimeVetor(vetor, 5*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
  
-
+	
 	//TESTE 3
-	geraVetorAleatorio(vetor,10000);
-	printf("\nOrdenando um vetor tam = 10000");
-	imprimeVetor(vetor, 10000);
+	geraVetorAleatorio(vetor,10*tam);
+	printf("\nOrdenando um vetor tam = 100");
+	imprimeVetor(vetor, 10*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = insertionSort(vetor,10000);
+	numComp = insertionSort(vetor,10*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 10000);
+	imprimeVetor(vetor, 10*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+
+	//TESTE 4
+	geraVetorAleatorio(vetor,50*tam);
+	printf("\nOrdenando um vetor tam = 500");
+	imprimeVetor(vetor, 50*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = insertionSort(vetor,50*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 50*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 
 	printf("\n");
@@ -180,38 +187,49 @@ int main(){
  	printf("\n--->SELECTION SORT\n");
 
 	//TESTE 1
-	geraVetorAleatorio(vetor,100);
-	printf("\nOrdenando um vetor tam = 100");
-	imprimeVetor(vetor, 100);
+	geraVetorAleatorio(vetor,tam);
+	printf("\nOrdenando um vetor tam = 10");
+	imprimeVetor(vetor, tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = selectionSort(vetor,100);
+	numComp = selectionSort(vetor,tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 100);
+	imprimeVetor(vetor, tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
  
-
+	
 	//TESTE 2
-	geraVetorAleatorio(vetor,1000);
-	printf("\nOrdenando um vetor tam = 1000");
-	imprimeVetor(vetor, 1000);
+	geraVetorAleatorio(vetor,5*tam);
+	printf("\nOrdenando um vetor tam = 50");
+	imprimeVetor(vetor, 5*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = selectionSort(vetor,1000);
+	numComp = selectionSort(vetor,5*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 1000);
+	imprimeVetor(vetor, 5*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
  
-
+	
 	//TESTE 3
-	geraVetorAleatorio(vetor,10000);
-	printf("\nOrdenando um vetor tam = 10000");
-	imprimeVetor(vetor, 10000);
+	geraVetorAleatorio(vetor,10*tam);
+	printf("\nOrdenando um vetor tam = 100");
+	imprimeVetor(vetor, 10*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = selectionSort(vetor,10*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 10*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+	
+	//TESTE 4
+	geraVetorAleatorio(vetor,50*tam);
+	printf("\nOrdenando um vetor tam = 500");
+	imprimeVetor(vetor, 50*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = selectionSort(vetor,10000);
+	numComp = selectionSort(vetor,50*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 10000);
+	imprimeVetor(vetor, 50*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 
 	printf("\n");
@@ -219,84 +237,105 @@ int main(){
  	printf("\n--->MERGE SORT\n");
 
 	//TESTE 1
-	geraVetorAleatorio(vetor,100);
-	printf("\nOrdenando um vetor tam = 100");
-	imprimeVetor(vetor, 100);
+	geraVetorAleatorio(vetor,tam);
+	printf("\nOrdenando um vetor tam = 10");
+	imprimeVetor(vetor, tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = mergeSort(vetor,100);
+	numComp = mergeSort(vetor,tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 100);
+	imprimeVetor(vetor, tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
  
-
+	
 	//TESTE 2
-	geraVetorAleatorio(vetor,1000);
-	printf("\nOrdenando um vetor tam = 1000");
-	imprimeVetor(vetor, 1000);
+	geraVetorAleatorio(vetor,5*tam);
+	printf("\nOrdenando um vetor tam = 50");
+	imprimeVetor(vetor, 5*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = mergeSort(vetor,1000);
+	numComp = mergeSort(vetor,5*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 1000);
+	imprimeVetor(vetor, 5*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
  
-
+	
 	//TESTE 3
-	geraVetorAleatorio(vetor,10000);
-	printf("\nOrdenando um vetor tam = 10000");
-	imprimeVetor(vetor, 10000);
+	geraVetorAleatorio(vetor,10*tam);
+	printf("\nOrdenando um vetor tam = 100");
+	imprimeVetor(vetor, 10*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = mergeSort(vetor,10000);
+	numComp = mergeSort(vetor,10*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 10000);
+	imprimeVetor(vetor, 10*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 
+	//TESTE 4
+	geraVetorAleatorio(vetor,50*tam);
+	printf("\nOrdenando um vetor tam = 500");
+	imprimeVetor(vetor, 50*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = mergeSort(vetor,50*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 50*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+	
 	printf("\n");
 
  	printf("\n--->QUICK SORT\n");
 
 	//TESTE 1
-	geraVetorAleatorio(vetor,100);
-	printf("\nOrdenando um vetor tam = 100");
-	imprimeVetor(vetor, 100);
+	geraVetorAleatorio(vetor, tam);
+	printf("\nOrdenando um vetor tam = 10");
+	imprimeVetor(vetor, tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = quickSort(vetor,100);
+	numComp = quickSort(vetor, tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 100);
+	imprimeVetor(vetor, tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
  
-
+	
 	//TESTE 2
-	geraVetorAleatorio(vetor,1000);
-	printf("\nOrdenando um vetor tam = 1000");
-	imprimeVetor(vetor, 1000);
+	geraVetorAleatorio(vetor,5*tam);
+	printf("\nOrdenando um vetor tam = 50");
+	imprimeVetor(vetor, 5*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = quickSort(vetor,1000);
+	numComp = quickSort(vetor,5*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 1000);
+	imprimeVetor(vetor, 5*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
- 
-
+ 	
+	
 	//TESTE 3
-	geraVetorAleatorio(vetor,10000);
-	printf("\nOrdenando um vetor tam = 10000");
-	imprimeVetor(vetor, 10000);
+	geraVetorAleatorio(vetor,10*tam);
+	printf("\nOrdenando um vetor tam = 100");
+	imprimeVetor(vetor, 10*tam);
 	start = clock();//start recebe o "ciclo" corrente
-	numComp = quickSort(vetor,10000);
+	numComp = quickSort(vetor,10*tam);
 	end = clock();//end recebe o "ciclo" corrente
 	total = ((double)end - start)/CLOCKS_PER_SEC;
-	imprimeVetor(vetor, 10000);
+	imprimeVetor(vetor, 10*tam);
 	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
 
+	//TESTE 4
+	geraVetorAleatorio(vetor,50*tam);
+	printf("\nOrdenando um vetor tam = 500");
+	imprimeVetor(vetor, 50*tam);
+	start = clock();//start recebe o "ciclo" corrente
+	numComp = quickSort(vetor,50*tam);
+	end = clock();//end recebe o "ciclo" corrente
+	total = ((double)end - start)/CLOCKS_PER_SEC;
+	imprimeVetor(vetor, 50*tam);
+	printf("(Nº de comp: %d | Tempo total: %f)\n",numComp, total);
+	
 	printf("\n");
 
 	//É obrigatório que você libere a memória alocada dinâmicamente via fee
 	free(vetor);
-	free(vetor1);
 
 	return 0;
 }
diff --git a/t1/main.o b/t1/main.o
index 324e61451b6ea13fa7d561eb207846e763003ac6..74333eb9a7492ad220eaee0324cafd606e7e546b 100644
GIT binary patch
literal 14936
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

literal 12888
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
b2m@pvgasi%b4A$nCqUg_0#ODh(e(oWHyS|}

diff --git a/t1/makefile b/t1/makefile
index 2ed9e7f..9d28825 100644
--- a/t1/makefile
+++ b/t1/makefile
@@ -1,5 +1,5 @@
 parametrosCompilacao=-Wall #-Wshadow
-nomePrograma=trab1grr20206873
+nomePrograma=trab
 
 all: $(nomePrograma)
 
diff --git a/t1/ordenacao.c b/t1/ordenacao.c
index 9ce1ed0..b5a20d1 100644
--- a/t1/ordenacao.c
+++ b/t1/ordenacao.c
@@ -6,7 +6,7 @@
 
 void getNome(char nome[]){
 	//substitua por seu nome
-	strncpy(nome, "Vinicius Fontoura de Abreu", MAX_CHAR_NOME);
+	strncpy(nome, "Vinicius Fontoura & Carla Capurro", MAX_CHAR_NOME);
 	nome[MAX_CHAR_NOME-1] = '\0';//adicionada terminação manual para caso de overflow
 }
 
@@ -41,11 +41,14 @@ int buscaSequencial(int vetor[], int tam, int valor, int* numComparacoes){
 //usada para processar a busca binaria corretamente
 int buscaBinariaCompleta(int vetor[], int tam, int inicio, int valor, int* numComparacoes) {
 	int meio;
+
+	//caso base
 	if (inicio > tam)
 		return -1;
 
 	meio = (tam+inicio)/2;
 
+	//confere no meio
 	if (vetor[meio] == valor) {
 		*numComparacoes+=1;
 		return meio;
@@ -66,10 +69,12 @@ int buscaBinaria(int vetor[], int tam, int valor, int* numComparacoes){
 	a = 0;
 	b = tam;
 	meio = tam/2;
+	//caso base
 	if (a > b) {
 		return -1;
 	}
 
+	//confere no meio
 	if (vetor[meio] == valor) {
 		*numComparacoes+=1;
 		return meio;
@@ -85,22 +90,52 @@ int buscaBinaria(int vetor[], int tam, int valor, int* numComparacoes){
 	return buscaBinariaCompleta(vetor,b,meio+1,valor,numComparacoes);
 }
 
+int busca(int vetor[], int a, int b, int valor, int* numComparacoes) {
+	int meio;
+	//caso base
+	if (a>b) {
+		if (valor > vetor[a]) {
+			*numComparacoes+=1;
+			return a+1;
+		}
+		return a;
+	}
+
+	meio = (a+b)/2;
+	//confere no meio
+	if (vetor[meio] == valor) {
+		*numComparacoes+=1;
+		return meio+1;
+	}
+	
+	// busca a esquerda
+	if (vetor[meio] > valor) {
+		*numComparacoes+=1;
+		return busca(vetor,a,meio-1,valor,numComparacoes);
+	}
+	//busca a direita
+	*numComparacoes+=1;
+	return busca(vetor,meio+1,b,valor,numComparacoes);
+
+}
 
 void troca(int vetor[], int a, int b) {
 	int x;
 	x = vetor[a];
 	vetor[a] = vetor[b];
 	vetor[b] = x;
+	//printf("troca de %d com %d\n", vetor[a], vetor[b]);
 }
 
 
 void insere(int vetor[], int a, int b,int* numComparacoes) {
 	int posicao,i;
 	//busca a posicao correta do ultimo elemento
-	posicao = buscaSequencial(vetor,b-1,vetor[b],numComparacoes);
+	posicao = busca(vetor, a, b, vetor[b], numComparacoes);
+	//printf("a posição correta de %d é no indice %d\n", vetor[b], posicao);
 	i = b;
 	//enquanto o ultimo elemento for maior que o elemento na sua posicao correta
-	while (i > posicao+1) {
+	while (i > posicao) {
 		//faz a troca ate chegar na posicao correta
 		troca(vetor,i,i-1);
 		i--;
@@ -109,11 +144,11 @@ void insere(int vetor[], int a, int b,int* numComparacoes) {
 
 int insertionSortCompleto(int vetor[], int a, int b, int* numComparacoes) {
 	if (a >= b)
-		return b;
+		return a;
 	//vai ser chamado ate chegar no vetor de tamanho 1
 	insertionSortCompleto(vetor,a,b-1,numComparacoes);
 	//insere cada elemento na posicao correta
-	insere(vetor,a,b,numComparacoes);
+	insere(vetor,a,b-1,numComparacoes);
 	return *numComparacoes;
 }
 
@@ -121,11 +156,12 @@ int insertionSortCompleto(int vetor[], int a, int b, int* numComparacoes) {
 int insertionSort(int vetor[], int tam){	
 	int numComparacoes;
 	numComparacoes = 0;
+	int a = 0;
 	//caso base
-	if (0 >= tam)
-		return tam;
+	if (a >= tam)
+		return a;
 	//faz a primeira chamada
-	insertionSortCompleto(vetor,0,tam,&numComparacoes);
+	insertionSortCompleto(vetor, a, tam, &numComparacoes);
 
 	return numComparacoes;
 }
diff --git a/t1/ordenacao.o b/t1/ordenacao.o
index 274fefcd09e92e1a11fac79618779b8ff9bfbae3..3c330f3c4de1b12bd427ff85e0a85936f811e7b1 100644
GIT binary patch
delta 1797
zcmca%y1;UR29tv1MlEIL$^4AGo}IpTd^%k(bh|#Wc70H1+wJ<qV}?hsNGk&a1A|Am
z>kALY3*8Ksu6OFBJi1*kbTjk@FoGDJ0^P1pnh!9(Jk7ws(Czx<<>ASljD`~8AUPC8
zf0_?4zOJ3TfKgJs)&x_wx8na~eI{A)*Lqmw3K%E<XOx`m#Jp69!=t<QMtA6g?$Re9
zS9x~+nEZ{|fbEC1>!13&ll56Nn7_PsnjFO<H#v$$Ve$kPt;vsB11Iw{3QnHD!M<6B
z^(w0pLs({BW^!g}v4UHEUP*pwQKEvHf^%X~PNITyVnJz9QT}9ZZe2!(&F0*!jFRe%
z3=9med;)Du&b(~Qa*RCe91JoH3=DrJoASsr$uLe1<B?Oc0V!f&V8{lA7ECcy5=bpr
zaSY?+eY{eWKk%?H)=b{YBhNGkA+TriR~~uBJCj9u)tOkBCfo7KF{(_C<&|f2nOw^&
z&zLfKF0VXe%jUhjw;40Rj$vS6=we`C5Mp3t&}IQy$iPqnp%^AW#pgrCtD)l4q2f}k
z5CO0|85kJWLd9F5;yDm$hTW4N@`=}<fy#b_${vBrK7xvGWrGO7bbWw|E3!kxlOYtt
zcc^#^RQv@rwEjZHb2uRi`ydnpKO@+8-VDE>5>ZeINr(hP2p2?P1%zTyg^K@yiq}KM
z&7tDe+>=iUOkznYEl!>sCAe?0n9w1{uaiFtiPx(_0}4b5fnxPP1Uvx=FfcHHC}eRq
zXi$K}g^|=pBZ-S5iB}?tiy(<#frtx%EkM@rdUB(%c>OeJ$f8@b9!XpR$v75h$b!@(
zi%TPkizBIbh6XH1y%dsoEJWN1>?~vrJ0TKaad7H~1k?XZIK<ygb`%k>H;2Xt$Qoo_
zen{fTwwy;2M-JW3IK)l4ArTESUk=F|VGwaYuyf^+B=R8=7~-dJh(AOU7oW^4dN>i5
z;}oE2n2CXb0fb>W&H+svmg5r8#9=wE0ZshlWJ59WdRWdnfF=veSr5>}VL6Kf<P@lj
zKulQ9(g1Og#9<lB15F&7v9uX7&?I0vs{>8EntSpsv3pF<xhL-uH{+ZEiZliW27}2z
z#m$-2c_t@{i%tH(%QD$VLIs)IBcZ~n!2^jqrOB0&@{?~!NN{>VMRX=V<Q1OGBdNkv
zhGc@I3R4Bo<RVEs&KXd33nuTBH0L}a1~KQs<e!q}oEH2Lp2TEJDRa&MP}XH&U~rsV
VDP_*N0+cft7#K>x=ARMg0RZ%Quu%X2

delta 1544
zcmZ2rdBb#q22+IiMlEIL$t5ha_yxLMAM_Ud_vrS$;nD5-VzL6O0q39Q1B{lgKk9Ey
z4rA3|{_xsrawDr8pGUXvi|)`5-KAeVx?O)v-pXns@P&bafuXtf2}3<=x9gMF(vy?9
zY$p3Nb8mKMd%!9cmYJ8CoLO3|;Fh0Pl3!YssF0GX;FwgDS~}U2M|X1t4-4buIlK}~
ze;6ij<CSxiVFa1Rz>o~0T=@jrn4Edpn4);tIT#pZ7#J9Apz^6G@-cAvn8~7i@=P_1
zljZoOCJXSfFwU7A$|ujbXL2c@I@1%z$@BQ+7+EIo<&$SrnS7T|p3!CUUp{%pl+CjI
zw;2OVK!!3fFmy36FbFX)GE^`_1gaqv!$hd~XQ(*XkqitB%c0_7ED(iY$1yN4Y@O^V
zAYOkAD!Ushdjz70;SN;1o)sdH1ECmRLB(G~#bLI5go^vIK@`4#2E})%xETjTybnS#
za592@;mvRaDiH;h5Qa!F$Z<jhRzN5Qd8qg?sCYe8+z=}6$~D<ZXwu|cLVG695I#`9
z3mOU_Z}BrQF#P!s0e6tZg^<KeKnfWc7(kQ=lDHR004gqwBt8#G99jKVh`1KmATcBj
z3D5uo$s=1_Ihj#ZobeoptbdB623apJG>kxcC6UZjM-oR?-;5+Kjii1K4)Glj@p`bM
zrI0i*LIWFQF|t7tNaDyA&qNYO_T*k1;{TDvWf|fT(WJlyiC&P!a!3xc#34QfhxlqF
zak0sJ#SSOJvW)^Xfif{LFn};D+c=<!!?H~Rnm8=OG@yysPktyaUJuJ22he2Evj@m#
z5Qb$B4iE?GA`lanJ2XHXBym{o@IVuX<_=+o3^WN>uE~oe?(uGfh6gxwCqI-Dp1eR(
zf>Qz%S0JIu2PMs!K5|V~loXpRAf*9g21sdeeuV0jp3EpEKY4+a1QQSU<XuvBOcvY_
z<<c4;rj@iEX9PFMECz;#$&J$HoD!lC-igTvrOi2S@IrVDlNn{qId2F+c-E60Wz0Dr
NfRYje149YO3IN82SZ4qL

diff --git a/t1/trab b/t1/trab
new file mode 100755
index 0000000000000000000000000000000000000000..2c2f2482cccf472f2cd9ee7474170f07893d1485
GIT binary patch
literal 26160
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
Xgai$1p(z1N1Vhi^mqOEk#$^BiKQzJ!

literal 0
HcmV?d00001

-- 
GitLab