#include #include #include #include #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"); }