From 42f7092d59abb006dedb3e10b2e413864f7fe0ca Mon Sep 17 00:00:00 2001 From: Naman <43387378+naman74@users.noreply.github.com> Date: Tue, 29 Oct 2019 15:09:14 +0530 Subject: [PATCH 1/5] Added TimSort --- Sorting Algorithms/TimSort.c | 104 +++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 Sorting Algorithms/TimSort.c diff --git a/Sorting Algorithms/TimSort.c b/Sorting Algorithms/TimSort.c new file mode 100644 index 0000000..9b27c6a --- /dev/null +++ b/Sorting Algorithms/TimSort.c @@ -0,0 +1,104 @@ +#include +const int run = 32; +int minimum(int a, int b) +{ + if(a temp && j >= beg) + { + a[j+1] = a[j]; + j--; + } + a[j+1] = temp; + } +} + +void merge(int a[], int left, int mid, int right) +{ + int len1 = mid - left + 1, len2 = right - mid; + int beg[len1], end[len2]; + int i,j,k; + for (i = 0; i < len1; i++) + beg[i] = a[left + i]; + for (i = 0; i < len2; i++) + end[i] = a[mid + 1 + i]; + + i = 0; + j = 0; + k = left; + + while (i < len1 && j < len2) + { + if (beg[i] <= end[j]) + { + a[k] = beg[i]; + i++; + } + else + { + a[k] = end[j]; + j++; + } + k++; + } + while (i < len1) + { + a[k] = beg[i]; + k++; + i++; + } + + while (j < len2) + { + a[k] = end[j]; + k++; + j++; + } +} +void timSort(int a[], int n) +{ + int i,size,beg,mid,end; + for (i = 0; i < n; i+=run) + insertionSort(a, i, minimum((i+31), (n-1))); + for (size = run; size < n; size = 2*size) + { + for (beg = 0; beg < n; beg += 2*size) + { + mid = beg + size - 1; + end = minimum((beg + 2*size - 1), (n-1)); + + merge(a, beg, mid, end); + } + } +} + +int main() +{ + int a[100],n,i; + scanf("%d",&n); + for(i=0;i Date: Tue, 29 Oct 2019 15:19:08 +0530 Subject: [PATCH 2/5] Added CocktailSort --- Sorting Algorithms/cocktailsort.c | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Sorting Algorithms/cocktailsort.c diff --git a/Sorting Algorithms/cocktailsort.c b/Sorting Algorithms/cocktailsort.c new file mode 100644 index 0000000..978b7c0 --- /dev/null +++ b/Sorting Algorithms/cocktailsort.c @@ -0,0 +1,49 @@ +#include +int temp; +void Cocktail(int a[], int n) +{ + int is_swapped = 1; + int begin = 0,i; + int end = n - 1; + + while (is_swapped) { + is_swapped = 0; + for (i = begin; i < end; ++i) { + if (a[i] > a[i + 1]) { + temp = a[i]; + a[i]=a[i+1]; + a[i+1]=temp; + is_swapped = 1; + } + } + if (!is_swapped) + break; + is_swapped = 0; + for (i = end - 1; i >= begin; --i) { + if (a[i] > a[i + 1]) + { + temp = a[i]; + a[i]=a[i+1]; + a[i+1]=temp; + is_swapped = 1; + } + } + ++begin; + } +} + +int main() +{ + int arr[100],n,i; + scanf("%d",&n); + for(i=0;i Date: Tue, 29 Oct 2019 15:29:30 +0530 Subject: [PATCH 3/5] Added CocktailSort --- cocktailsort.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 cocktailsort.c diff --git a/cocktailsort.c b/cocktailsort.c new file mode 100644 index 0000000..978b7c0 --- /dev/null +++ b/cocktailsort.c @@ -0,0 +1,49 @@ +#include +int temp; +void Cocktail(int a[], int n) +{ + int is_swapped = 1; + int begin = 0,i; + int end = n - 1; + + while (is_swapped) { + is_swapped = 0; + for (i = begin; i < end; ++i) { + if (a[i] > a[i + 1]) { + temp = a[i]; + a[i]=a[i+1]; + a[i+1]=temp; + is_swapped = 1; + } + } + if (!is_swapped) + break; + is_swapped = 0; + for (i = end - 1; i >= begin; --i) { + if (a[i] > a[i + 1]) + { + temp = a[i]; + a[i]=a[i+1]; + a[i+1]=temp; + is_swapped = 1; + } + } + ++begin; + } +} + +int main() +{ + int arr[100],n,i; + scanf("%d",&n); + for(i=0;i Date: Tue, 29 Oct 2019 15:34:28 +0530 Subject: [PATCH 4/5] Added BitonicSort --- Sorting Algorithms/BitonicSort.c | 53 ++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Sorting Algorithms/BitonicSort.c diff --git a/Sorting Algorithms/BitonicSort.c b/Sorting Algorithms/BitonicSort.c new file mode 100644 index 0000000..0ca9c68 --- /dev/null +++ b/Sorting Algorithms/BitonicSort.c @@ -0,0 +1,53 @@ +#include +void exchange(int arr[], int i, int j, int d) +{ + int temp; + if (d==(arr[i]>arr[j])) + { + temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +} +void merge(int arr[], int l, int c, int d) +{ + int k,i; + if (c>1) + { + k = c/2; + for (i=l; i1) + { + k = c/2; + bitonicSort(arr, l, k, 1); + bitonicSort(arr, l+k, k, 0); + merge(arr,l, c, d); + } +} + +void sort(int arr[], int n, int order) +{ + bitonicSort(arr,0, n, order); +} +int main() +{ + int arr[100],n,i,order = 1; + scanf("%d",&n); + for(i=0;i Date: Tue, 29 Oct 2019 15:52:12 +0530 Subject: [PATCH 5/5] Added LinearSearch --- Searching Algorithm/LinearSearch.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Searching Algorithm/LinearSearch.c diff --git a/Searching Algorithm/LinearSearch.c b/Searching Algorithm/LinearSearch.c new file mode 100644 index 0000000..7ddecd4 --- /dev/null +++ b/Searching Algorithm/LinearSearch.c @@ -0,0 +1,30 @@ +#include + +int main() +{ + int array[100], search, c, n; + + printf("Enter number of elements in array\n"); + scanf("%d", &n); + + printf("Enter %d integer(s)\n", n); + + for (c = 0; c < n; c++) + scanf("%d", &array[c]); + + printf("Enter a number to search\n"); + scanf("%d", &search); + + for (c = 0; c < n; c++) + { + if (array[c] == search) + { + printf("%d is present at location %d.\n", search, c+1); + break; + } + } + if (c == n) + printf("%d isn't present in the array.\n", search); + + return 0; +}