diff --git a/Introdução à Análise de Algoritmos/EP 1/Resolução EP1 - IAA.md b/Introdução à Análise de Algoritmos/EP 1/Resolução EP1 - IAA.md index 1de0330..9f1846f 100644 --- a/Introdução à Análise de Algoritmos/EP 1/Resolução EP1 - IAA.md +++ b/Introdução à Análise de Algoritmos/EP 1/Resolução EP1 - IAA.md @@ -316,7 +316,7 @@ Os seguintes gráfico e tabela relatam o resultado da experimentação: | Tamanho da entrada | Tempo de execução — *mergeSelect* | Tempo de execução — *quickSelect* | -| ------------------ | ---------------------------------:| ---------------------------------:| +|:------------------ | ---------------------------------:| ---------------------------------:| | 1 | 4,39 | 2,51 | | 2 | 8,35 | 4,24 | | 4 | 14,27 | 6,47 | diff --git a/Introdução à Análise de Algoritmos/EP 1/mergeSelect/automatic_test.c b/Introdução à Análise de Algoritmos/EP 1/mergeSelect/automatic_test.c index ef8df10..289565d 100644 --- a/Introdução à Análise de Algoritmos/EP 1/mergeSelect/automatic_test.c +++ b/Introdução à Análise de Algoritmos/EP 1/mergeSelect/automatic_test.c @@ -22,5 +22,6 @@ int main () { mergeSort(A, size); printf("O %dº elemento de menor valor: %d\n", index, A[index - 1]); + free(A); return 0; } diff --git a/Introdução à Análise de Algoritmos/EP 1/mergeSelect/manual_test.c b/Introdução à Análise de Algoritmos/EP 1/mergeSelect/manual_test.c index 0b970d8..c7b639d 100644 --- a/Introdução à Análise de Algoritmos/EP 1/mergeSelect/manual_test.c +++ b/Introdução à Análise de Algoritmos/EP 1/mergeSelect/manual_test.c @@ -1,29 +1,37 @@ #include "./merge_select.h" -int main () { - unsigned int i = 0, size = 1; - array A = malloc(size * sizeof(int)); - int d; +int * readArray (int *size) { + int d, i = 0; char c; - - printf("Este programa admite uma lista de valores inteiros x tais que %d ≤ x ≤ %d e afere o valor do i-ésimo menor valor.\nDigite uma série de valores inteiros separadas entre si por espaço e pressione ENTER:\n", INT_MIN, INT_MAX); + array A; + + *size = 1; + A = malloc(sizeof(int)); do { if (!scanf(" %d", &d)) continue; - if (i == size - 1) { - size *= 2; - A = realloc(A, size * sizeof(int)); + if (i == *size - 1) { + *size *= 2; + A = realloc(A, *size * sizeof(int)); } A[i++] = d; } while ((c = getchar()) != EOF && c != '\n'); - size = i; + *size = i; + return A; +} + +int main () { + int i, d, size; + array A; + + printf("Este programa admite uma lista de valores inteiros x tais que %d ≤ x ≤ %d e afere o valor do i-ésimo menor valor.\nDigite uma série de valores inteiros separadas entre si por espaço e pressione ENTER:\n", INT_MIN, INT_MAX); + A = readArray(&size); printf("Digite um índice i tal que 1 ≤ i ≤ %d: ", size); if (!scanf(" %d", &d) || d <= 0 || d > size) { printf("Valor inválido detectado.\n"); return 1; } - mergeSort(A, size); printf("Arranjo ordenado:\n"); @@ -32,5 +40,6 @@ int main () { printf("\n"); printf("\nO %dº elemento de menor valor: %d\n", d, A[d - 1]); + free(A); return 0; } diff --git a/Introdução à Análise de Algoritmos/EP 1/quickSelect/automatic_test.c b/Introdução à Análise de Algoritmos/EP 1/quickSelect/automatic_test.c index e504f61..4b8a8f3 100644 --- a/Introdução à Análise de Algoritmos/EP 1/quickSelect/automatic_test.c +++ b/Introdução à Análise de Algoritmos/EP 1/quickSelect/automatic_test.c @@ -20,5 +20,6 @@ int main () { return 1; } printf("O %dº elemento de menor valor: %d\n", index, *(quickSelect(A, size, index - 1))); + free(A); return 0; } diff --git a/Introdução à Análise de Algoritmos/EP 1/quickSelect/manual_test.c b/Introdução à Análise de Algoritmos/EP 1/quickSelect/manual_test.c index 491d81f..34285fd 100644 --- a/Introdução à Análise de Algoritmos/EP 1/quickSelect/manual_test.c +++ b/Introdução à Análise de Algoritmos/EP 1/quickSelect/manual_test.c @@ -1,22 +1,31 @@ #include "./quick_select.h" -int main () { - unsigned int i = 0, size = 1; - array A = malloc(size * sizeof(int)); - int d, *result; +int * readArray (int *size) { + int d, i = 0; char c; - - printf("Este programa admite uma lista de valores inteiros x tais que %d ≤ x ≤ %d e afere o valor do i-ésimo menor valor.\nDigite uma série de valores inteiros separadas entre si por espaço e pressione ENTER:\n", INT_MIN, INT_MAX); + array A; + + *size = 1; + A = malloc(sizeof(int)); do { if (!scanf(" %d", &d)) continue; - if (i == size - 1) { - size *= 2; - A = realloc(A, size * sizeof(int)); + if (i == *size - 1) { + *size *= 2; + A = realloc(A, *size * sizeof(int)); } A[i++] = d; } while ((c = getchar()) != EOF && c != '\n'); - size = i; + *size = i; + return A; +} + +int main () { + int i, size, d, *result; + array A; + + printf("Este programa admite uma lista de valores inteiros x tais que %d ≤ x ≤ %d e afere o valor do i-ésimo menor valor.\nDigite uma série de valores inteiros separadas entre si por espaço e pressione ENTER:\n", INT_MIN, INT_MAX); + A = readArray(&size); printf("Digite um índice i tal que 1 ≤ i ≤ %d: ", size); if (!scanf(" %d", &d) || d <= 0 || d > size) { @@ -32,5 +41,6 @@ int main () { printf("\n"); printf("\nO %dº elemento de menor valor: %d\n", d, *result); + free(A); return 0; }