|
- #include <stdio.h>
- #include <time.h>
- #include <bits/time.h>
- #include <stdlib.h>
- #include "sorts.h"
-
- void init_arr(double* arr, size_t n) {
- for (size_t i = 0; i < n; i++ ){
- arr[i] = (double) (rand() % (2 << 10)) / 42;
- }
- }
-
- void do_test(size_t n) {
- double arr[n];
- long start = clock() * 1000 / CLOCKS_PER_SEC;
- long elapsed;
- size_t sorts = 0;
- srand(time(0));
- do {
- init_arr(arr, n);
- quicksort(arr, n);
- elapsed = clock() * 1000 / CLOCKS_PER_SEC - start;
- sorts++;
- } while (elapsed < 2500);
- printf("Quicksort:\n%lu sorts done in %ld ms, avg: %.5f ms\n", sorts, elapsed, (double) elapsed / sorts);
-
- start = clock() * 1000 / CLOCKS_PER_SEC;
- sorts = 0;
- do {
- init_arr(arr, n);
- shellsort(arr, n);
- elapsed = clock() * 1000 / CLOCKS_PER_SEC - start;
- sorts++;
- } while (elapsed < 2500);
- printf("Shellsort:\n%lu sorts done in %ld ms, avg: %.5f ms\n", sorts, elapsed, (double) elapsed / sorts);
-
- start = clock() * 1000 / CLOCKS_PER_SEC;
- sorts = 0;
- do {
- init_arr(arr, n);
- selectionsort(arr, n);
- elapsed = clock() * 1000 / CLOCKS_PER_SEC - start;
- sorts++;
- } while (elapsed < 2500);
- printf("Selection sort:\n%lu sorts done in %ld ms, avg: %.5f ms\n", sorts, elapsed, (double) elapsed / sorts);
- }
-
- int main() {
- printf("Doing test for n = 2 << 9\n");
- do_test(2 << 9);
- printf("\n");
- printf("Doing test for n = 2 << 12\n");
- do_test(2 << 12);
- printf("\n");
- printf("Doing test for n = 2 << 15\n");
- do_test(2 << 15);
- printf("\n");
- }
|