diff --git a/hash/test_program.c b/hash/test_program.c index 3f741bc6..1ce85c85 100644 --- a/hash/test_program.c +++ b/hash/test_program.c @@ -1,20 +1,20 @@ -/* - author: Christian Bender - This file contains a simple test program for each hash-function. -*/ - -#include -#include "hash.h" - -int main(void) -{ - char s[] = "hello"; - - /* actual tests */ - printf("sdbm: %s --> %llX\n", s, sdbm(s)); - printf("djb2: %s --> %llX\n", s, djb2(s)); - printf("xor8: %s --> %X\n", s, xor8(s)); /* 8 bit */ - printf("adler_32: %s --> %X\n", s, adler_32(s)); /* 32 bit */ - - return 0; -} +/* + author: Christian Bender + This file contains a simple test program for each hash-function. +*/ + +#include +#include "hash.h" + +int main(void) +{ + char s[] = "hello"; + + /* actual tests */ + printf("sdbm: %s --> %llX\n", s, sdbm(s)); + printf("djb2: %s --> %llX\n", s, djb2(s)); + printf("xor8: %s --> %X\n", s, xor8(s)); /* 8 bit */ + printf("adler_32: %s --> %X\n", s, adler_32(s)); /* 32 bit */ + + return 0; +} diff --git a/project_euler/Problem 25/sol1.c b/project_euler/Problem 25/sol1.c index b6addd95..db96af96 100644 --- a/project_euler/Problem 25/sol1.c +++ b/project_euler/Problem 25/sol1.c @@ -1,5 +1,6 @@ #include #include +#include #include #include diff --git a/sorting/shell_Sort.c b/sorting/shell_Sort.c index 8ebf6fcc..f40716ac 100644 --- a/sorting/shell_Sort.c +++ b/sorting/shell_Sort.c @@ -1,111 +1,111 @@ -#include -#include -#include - -#define ELEMENT_NR 20000 -#define ARRAY_LEN(x) (sizeof(x) / sizeof((x)[0])) -const char *notation = "Shell Sort Big O Notation:\ - \n--> Best Case: O(n log(n)) \ - \n--> Average Case: depends on gap sequence \ - \n--> Worst Case: O(n)"; - -void show_data(int arr[], int len) -{ - int i; - - for (i = 0; i < len; i++) - printf("%3d ", arr[i]); - printf("\n"); -} - -void swap(int *a, int *b) -{ - int tmp; - - tmp = *a; - *a = *b; - *b = tmp; -} - -void shellSort(int array[], int len) -{ - int i, j, gap; - - for (gap = len / 2; gap > 0; gap = gap / 2) - for (i = gap; i < len; i++) - for (j = i - gap; j >= 0 && array[j] > array[j + gap]; j = j - gap) - swap(&array[j], &array[j + gap]); -} - -/** - * Optimized algorithm - takes half the time as other - **/ -void shell_sort2(int array[], int LEN) -{ - const int gaps[] = {701, 301, 132, 57, 23, 10, 4, 1}; - const int gap_len = 8; - int i, j, g; - - for (g = 0; g < gap_len; g++) - { - int gap = gaps[g]; - for (i = gap; i < LEN; i++) - { - int tmp = array[i]; - - for (j = i; j >= gap && (array[j - gap] - tmp) > 0; j -= gap) - array[j] = array[j - gap]; - array[j] = tmp; - } - } -#ifdef DEBUG - for (i = 0; i < LEN; i++) - printf("%s\t", data[i]); -#endif -} - -int main(int argc, char *argv[]) -{ - int i; - int array[ELEMENT_NR]; - int array2[ELEMENT_NR]; - int range = 500; - int size; - clock_t start, end; - double time_spent; - - srand(time(NULL)); - for (i = 0; i < ELEMENT_NR; i++) - { - array[i] = rand() % range + 1; - array2[i] = array[i]; - } - - size = ARRAY_LEN(array); - - show_data(array, size); - start = clock(); - shellSort(array, size); - end = clock(); - time_spent = (double)(end - start) / CLOCKS_PER_SEC; - - printf("Data Sorted\n"); - show_data(array, size); - - printf("%s\n", notation); - printf("Time spent sorting: %.4g ms\n", time_spent * 1e3); - - printf("--------------------------\n"); - start = clock(); - shell_sort2(array2, size); - end = clock(); - time_spent = (double)(end - start) / CLOCKS_PER_SEC; - - printf("Data Sorted\n"); - show_data(array2, size); - - printf("%s\n", notation); - printf("Time spent sorting: %.4g ms\n", time_spent * 1e3); - - return 0; -} +#include +#include +#include + +#define ELEMENT_NR 20000 +#define ARRAY_LEN(x) (sizeof(x) / sizeof((x)[0])) +const char *notation = "Shell Sort Big O Notation:\ + \n--> Best Case: O(n log(n)) \ + \n--> Average Case: depends on gap sequence \ + \n--> Worst Case: O(n)"; + +void show_data(int arr[], int len) +{ + int i; + + for (i = 0; i < len; i++) + printf("%3d ", arr[i]); + printf("\n"); +} + +void swap(int *a, int *b) +{ + int tmp; + + tmp = *a; + *a = *b; + *b = tmp; +} + +void shellSort(int array[], int len) +{ + int i, j, gap; + + for (gap = len / 2; gap > 0; gap = gap / 2) + for (i = gap; i < len; i++) + for (j = i - gap; j >= 0 && array[j] > array[j + gap]; j = j - gap) + swap(&array[j], &array[j + gap]); +} + +/** + * Optimized algorithm - takes half the time as other + **/ +void shell_sort2(int array[], int LEN) +{ + const int gaps[] = {701, 301, 132, 57, 23, 10, 4, 1}; + const int gap_len = 8; + int i, j, g; + + for (g = 0; g < gap_len; g++) + { + int gap = gaps[g]; + for (i = gap; i < LEN; i++) + { + int tmp = array[i]; + + for (j = i; j >= gap && (array[j - gap] - tmp) > 0; j -= gap) + array[j] = array[j - gap]; + array[j] = tmp; + } + } +#ifdef DEBUG + for (i = 0; i < LEN; i++) + printf("%s\t", data[i]); +#endif +} + +int main(int argc, char *argv[]) +{ + int i; + int array[ELEMENT_NR]; + int array2[ELEMENT_NR]; + int range = 500; + int size; + clock_t start, end; + double time_spent; + + srand(time(NULL)); + for (i = 0; i < ELEMENT_NR; i++) + { + array[i] = rand() % range + 1; + array2[i] = array[i]; + } + + size = ARRAY_LEN(array); + + show_data(array, size); + start = clock(); + shellSort(array, size); + end = clock(); + time_spent = (double)(end - start) / CLOCKS_PER_SEC; + + printf("Data Sorted\n"); + show_data(array, size); + + printf("%s\n", notation); + printf("Time spent sorting: %.4g ms\n", time_spent * 1e3); + + printf("--------------------------\n"); + start = clock(); + shell_sort2(array2, size); + end = clock(); + time_spent = (double)(end - start) / CLOCKS_PER_SEC; + + printf("Data Sorted\n"); + show_data(array2, size); + + printf("%s\n", notation); + printf("Time spent sorting: %.4g ms\n", time_spent * 1e3); + + return 0; +}