From 489db12ac915bee07da4ac479a1b892d3c1879e5 Mon Sep 17 00:00:00 2001 From: Hiyabye Date: Sat, 18 Apr 2020 20:00:23 +0900 Subject: [PATCH 1/4] Add new sorting algorithm --- sorting/Pigeon_Sort.c | 73 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 sorting/Pigeon_Sort.c diff --git a/sorting/Pigeon_Sort.c b/sorting/Pigeon_Sort.c new file mode 100644 index 00000000..8b7d417e --- /dev/null +++ b/sorting/Pigeon_Sort.c @@ -0,0 +1,73 @@ +#include +#include + +int pigeonSort(int arr[], int size) +{ + int i, j, min = arr[0], max = arr[0], range; + + // Getting range of the array using max and min + for (i=1; i max) + max = arr[i]; + } + range = max - min + 1; + + // Make 'holes' and put array's numbers in holes + int * holes = (int*)malloc(sizeof(int) * range); + for (i=0; i 0) + { + arr[j] = i + min; + holes[i]--; + j++; + } + } + + free(holes); +} + +int main() +{ + int i, n; + + printf("Enter the size of the array: "); + scanf("%d", &n); + int * arr = (int*)malloc(sizeof(int) * n); + + for (i = 0; i < n; i++) + { + printf("Number #%d: ", i + 1); + scanf("%d", &arr[i]); + } + + printf("You entered: "); + for (i=0; i Date: Sat, 18 Apr 2020 20:03:25 +0900 Subject: [PATCH 2/4] Changed function name --- sorting/{Pigeon_Sort.c => Pigeonhole_Sort.c} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename sorting/{Pigeon_Sort.c => Pigeonhole_Sort.c} (94%) diff --git a/sorting/Pigeon_Sort.c b/sorting/Pigeonhole_Sort.c similarity index 94% rename from sorting/Pigeon_Sort.c rename to sorting/Pigeonhole_Sort.c index 8b7d417e..6f99bc38 100644 --- a/sorting/Pigeon_Sort.c +++ b/sorting/Pigeonhole_Sort.c @@ -1,7 +1,7 @@ #include #include -int pigeonSort(int arr[], int size) +int pigeonholeSort(int arr[], int size) { int i, j, min = arr[0], max = arr[0], range; @@ -60,7 +60,7 @@ int main() { printf("%d ", arr[i]); } - pigeonSort(arr, n); + pigeonholeSort(arr, n); printf("\nSorted array: "); for (i=0; i Date: Sat, 18 Apr 2020 20:29:38 +0900 Subject: [PATCH 3/4] Add new sorting algorithm (Cocktail Sort) --- sorting/Cocktail_Sort.c | 73 +++++++++++++++++++++++++++++++++++++++ sorting/Pigeonhole_Sort.c | 4 +-- 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 sorting/Cocktail_Sort.c diff --git a/sorting/Cocktail_Sort.c b/sorting/Cocktail_Sort.c new file mode 100644 index 00000000..4fd0ef4d --- /dev/null +++ b/sorting/Cocktail_Sort.c @@ -0,0 +1,73 @@ +#include +#include + +#define TRUE 1 +#define FALSE 0 + +void cocktailSort(int arr[], int size) +{ + int i, changed = TRUE, temp, start = 0, end = size - 1; + + while (changed) + { + changed = FALSE; + for (i=start; i arr[i+1]) + { + temp = arr[i]; + arr[i] = arr[i+1]; + arr[i+1] = temp; + changed = TRUE; + } + } + + if (changed == FALSE) + { + break; + } + changed = FALSE; + + for (i=end-1; i>=start; i--) + { + if (arr[i+1] < arr[i]) + { + temp = arr[i+1]; + arr[i+1] = arr[i]; + arr[i] = temp; + changed = TRUE; + } + } + } +} + +int main() +{ + int i, n; + + printf("Enter the size of the array: "); + scanf("%d", &n); + int* arr = (int*)malloc(sizeof(int) * n); + + for (i = 0; i < n; i++) + { + printf("Number #%d: ", i + 1); + scanf("%d", &arr[i]); + } + + printf("You entered: "); + for (i=0; i #include -int pigeonholeSort(int arr[], int size) +void pigeonholeSort(int arr[], int size) { int i, j, min = arr[0], max = arr[0], range; @@ -55,7 +55,7 @@ int main() scanf("%d", &arr[i]); } - printf("You entered: "); + printf("You entered: "); for (i=0; i Date: Sat, 18 Apr 2020 20:33:31 +0900 Subject: [PATCH 4/4] Increased spead of Cocktail Sort --- sorting/Cocktail_Sort.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sorting/Cocktail_Sort.c b/sorting/Cocktail_Sort.c index 4fd0ef4d..909d54bf 100644 --- a/sorting/Cocktail_Sort.c +++ b/sorting/Cocktail_Sort.c @@ -21,6 +21,7 @@ void cocktailSort(int arr[], int size) changed = TRUE; } } + end--; if (changed == FALSE) { @@ -38,6 +39,7 @@ void cocktailSort(int arr[], int size) changed = TRUE; } } + start++; } }