int main(void){ OrdinaryHeap H[REPEAT][MAX_MERGE]; FILE *fp; int size, each_size, merges; int method; int x, i, merge_cnt, rpt; clock_t start, stop; double duration; /* initialize */ fp = fopen("settings.txt", "r"); fscanf(fp, "%d%d", &size, &merges); fclose(fp); each_size = size / merges; fp = fopen("test_cases/test_all.txt", "r"); for (merge_cnt = 0; merge_cnt < merges; merge_cnt++){ H[0][merge_cnt] = create_ordinary_heap(size); for (i = 0; i < each_size; i++){ fscanf(fp, "%d", &x); insert_ordinary_heap(x, H[0][merge_cnt]); } } fclose(fp); /* copy heap since a merge operation destroy the original heap */ for (rpt = 1; rpt < REPEAT; rpt++) for (merge_cnt = 0; merge_cnt < merges; merge_cnt++) H[rpt][merge_cnt] = copy_heap(H[0][merge_cnt], H[rpt][merge_cnt]); /* Start test */ start = clock(); for (rpt = 0; rpt < REPEAT; rpt++) for (merge_cnt = 0; merge_cnt < merges - 1; merge_cnt++) H[rpt][merge_cnt + 1] = merge_heap(H[rpt][merge_cnt + 1], H[rpt][merge_cnt]); stop = clock(); duration = ((double)(stop - start)) / CLOCKS_PER_SEC; printf("%lf\n", duration); return 0; }
int main (int argc, char **argv) { int i, n, tot; double start, stop; FILE **entrada, *saida; n = argc - 3; entrada = malloc (n * sizeof (FILE)); saida = fopen (argv[argc - 1], "r+"); for (i = 2; i < argc - 1; i++) entrada[i - 2] = fopen (argv[i], "r"); if (argv[1][1] == 'h') { start = (double) clock () / CLOCKS_PER_SEC; tot = merge_heap (entrada, saida, n); stop = (double) clock () / CLOCKS_PER_SEC; } else { start = (double) clock () / CLOCKS_PER_SEC; tot = merge_simple (entrada, saida, n); stop = (double) clock () / CLOCKS_PER_SEC; } fflush (saida); printf ("Tempo gasto: %.3f\n", stop - start); printf ("Quantidade de arquivos de entrada: %d\n", n); printf ("Quantidade de numeros: %d\n", tot); if (DEBUG) verify (saida, tot); for(i = 0; i < n; i++) fclose (entrada[i]); fclose (saida); free (entrada); return EXIT_SUCCESS; }