From cd59b183df9e01f2d2f367088c8d7d427cd23e02 Mon Sep 17 00:00:00 2001 From: CheerfulBear22 <.> Date: Fri, 7 Feb 2025 19:37:26 +0000 Subject: [PATCH 1/3] Added sorting/slow_sort.c --- sorting/slow_sort.c | 61 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 sorting/slow_sort.c diff --git a/sorting/slow_sort.c b/sorting/slow_sort.c new file mode 100644 index 0000000000..6d87a6ecd0 --- /dev/null +++ b/sorting/slow_sort.c @@ -0,0 +1,61 @@ +#include +#include +#include + +void display(int arr[], int size) +{ + for(int i = 0; i < size; i++) + { + printf("%d ", arr[i]); + } + + printf("\n"); +} + +void swap(int *num1, int *num2) +{ + int temp = *num1; + *num1 = *num2; + *num2 = *num1; +} + +void slowsort(int arr[], int low, int high) +{ + if (low >= high) + return; + + int middle = (low + high) / 2; + + slowsort(arr, low, middle); + slowsort(arr, middle+1, high); + + if (arr[high] < arr[middle]) + swap(&arr[high], &arr[middle]); + + slowsort(arr, low, high - 1); +} + +void test() +{ + const int size = 20; + + int *arr = (int *)calloc(size, sizeof(int)); + + for (int i = 0; i < size; i++) + { + arr[i] = rand() % 100; + } + + slowsort(arr, 0, size-1); + + display(arr, size); + + free(arr); +} + +int main() +{ + srand(time(NULL)); + test(); + return 0; +} From b2d67f05834c237e5e25bd600469ef94854ed69a Mon Sep 17 00:00:00 2001 From: CheerfulBear22 <.> Date: Fri, 7 Feb 2025 19:41:34 +0000 Subject: [PATCH 2/3] Added comments to slow_sort.c --- sorting/slow_sort.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sorting/slow_sort.c b/sorting/slow_sort.c index 6d87a6ecd0..0497b26c81 100644 --- a/sorting/slow_sort.c +++ b/sorting/slow_sort.c @@ -2,6 +2,7 @@ #include #include +/*Displays array passed as parameter*/ void display(int arr[], int size) { for(int i = 0; i < size; i++) @@ -12,6 +13,7 @@ void display(int arr[], int size) printf("\n"); } +/*Swaps the two values passed to the function*/ void swap(int *num1, int *num2) { int temp = *num1; @@ -19,6 +21,12 @@ void swap(int *num1, int *num2) *num2 = *num1; } +/* + Slow sort function + @param arr The array to be sorted + @param low The starting index + @param high The ending index +*/ void slowsort(int arr[], int low, int high) { if (low >= high) @@ -35,6 +43,7 @@ void slowsort(int arr[], int low, int high) slowsort(arr, low, high - 1); } +/*Test function*/ void test() { const int size = 20; From 098edd53f838f61858c62db63594ca9a6ffadb1f Mon Sep 17 00:00:00 2001 From: CheerfulBear22 <.> Date: Fri, 7 Feb 2025 19:46:03 +0000 Subject: [PATCH 3/3] Improved test code for slow_sort.c --- sorting/slow_sort.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sorting/slow_sort.c b/sorting/slow_sort.c index 0497b26c81..d88b53c25b 100644 --- a/sorting/slow_sort.c +++ b/sorting/slow_sort.c @@ -1,6 +1,7 @@ #include #include #include +#include /*Displays array passed as parameter*/ void display(int arr[], int size) @@ -57,6 +58,11 @@ void test() slowsort(arr, 0, size-1); + for (int i = 0; i < size - 1; i++) + { + assert(arr[i] <= arr[i+1]); + } + display(arr, size); free(arr);