diff --git a/cpp/sanyamMergeSort.cpp b/cpp/sanyamMergeSort.cpp new file mode 100644 index 00000000..a9ce7008 --- /dev/null +++ b/cpp/sanyamMergeSort.cpp @@ -0,0 +1,74 @@ +#include +#include + +void merge(int arr[], int l, int m, int r) +{ + int i, j, k; + int n1 = m - l + 1; + int n2 = r - m; + + int L[n1], R[n2]; + for (i = 0; i < n1; i++) + L[i] = arr[l + i]; + for (j = 0; j < n2; j++) + R[j] = arr[m + 1 + j]; + + + i = 0; + j = 0; + k = l; + while (i < n1 && j < n2) { + if (L[i] <= R[j]) { + arr[k] = L[i]; + i++; + } + else { + arr[k] = R[j]; + j++; + } + k++; + } + + while (i < n1) { + arr[k] = L[i]; + i++; + k++; + } + while (j < n2) { + arr[k] = R[j]; + j++; + k++; + } +} +void mergeSort(int arr[], int l, int r) +{ + if (l < r) { + + int m = l + (r - l) / 2; + mergeSort(arr, l, m); + mergeSort(arr, m + 1, r); + + merge(arr, l, m, r); + } +} +void printArray(int A[], int size) +{ + int i; + for (i = 0; i < size; i++) + printf("%d ", A[i]); + printf("\n"); +} +int main() +{ + int arr[] = { 12, 11, 13, 5, 6, 7 }; + int arr_size = sizeof(arr) / sizeof(arr[0]); + + printf(" The given array is \n"); + printArray(arr, arr_size); + + mergeSort(arr, 0, arr_size - 1); + + printf("\nSorted array is \n"); + printArray(arr, arr_size); + return 0; +} \ No newline at end of file diff --git a/cpp/sanyamSearchingPattern.cpp b/cpp/sanyamSearchingPattern.cpp new file mode 100644 index 00000000..c3b5f1b5 --- /dev/null +++ b/cpp/sanyamSearchingPattern.cpp @@ -0,0 +1,68 @@ +#include + //KMP Agorithm +void computeLPSArray(char* pat, int M, int* lps); +void KMPSearch(char* pat, char* txt) +{ + int M = strlen(pat); + int N = strlen(txt); + + int lps[M]; + computeLPSArray(pat, M, lps); + + int i = 0; + int j = 0; + while (i < N) { + if (pat[j] == txt[i]) { + j++; + i++; + } + if (j == M) { + printf("Found pattern at index %d ", i - j); + j = lps[j - 1]; + } + + else if (i < N && pat[j] != txt[i]) { + + if (j != 0) + j = lps[j - 1]; + else + i = i + 1; + } + } +} +void computeLPSArray(char* pat, int M, int* lps) +{ + int len = 0; + + lps[0] = 0; + + int i = 1; + while (i < M) { + if (pat[i] == pat[len]) { + len++; + lps[i] = len; + i++; + } + else + { + + if (len != 0) { + len = lps[len - 1]; + + } + else + { + lps[i] = 0; + i++; + } + } + } +} + +int main() +{ + char txt[] = "ABABDABACDABABCABAB"; + char pat[] = "ABABCABAB"; + KMPSearch(pat, txt); + return 0; +} \ No newline at end of file diff --git a/cpp/sanyamSelectionSort.cpp b/cpp/sanyamSelectionSort.cpp new file mode 100644 index 00000000..c50222d5 --- /dev/null +++ b/cpp/sanyamSelectionSort.cpp @@ -0,0 +1,40 @@ +#include +using namespace std; + +void swap(int *xp, int *yp) +{ + int temp = *xp; + *xp = *yp; + *yp = temp; +} + +void selectionSort(int arr[], int n) +{ + int i, j, min_idx; + for (i = 0; i < n-1; i++) + { + min_idx = i; + for (j = i+1; j < n; j++) + if (arr[j] < arr[min_idx]) + min_idx = j; + swap(&arr[min_idx], &arr[i]); + } +} + + +void printArray(int arr[], int size) +{ + int i; + for (i=0; i < size; i++) + cout << arr[i] << " "; + cout << endl; +} +int main() +{ + int arr[] = {64, 25, 12, 22, 11}; + int n = sizeof(arr)/sizeof(arr[0]); + selectionSort(arr, n); + cout << "Sorted array: \n"; + printArray(arr, n); + return 0; +} \ No newline at end of file diff --git a/cpp/sanyamStringFrequency.cpp b/cpp/sanyamStringFrequency.cpp new file mode 100644 index 00000000..be3f0a55 --- /dev/null +++ b/cpp/sanyamStringFrequency.cpp @@ -0,0 +1,23 @@ +#include +using namespace std; +int count(string a, string b, int m, int n) +{ + if ((m == 0 && n == 0) || n == 0) + return 1; + if (m == 0) + return 0; + if (a[m - 1] == b[n - 1]) + return count(a, b, m - 1, n - 1) + + count(a, b, m - 1, n); + else + return count(a, b, m - 1, n); +} +int main() +{ + string a = "abcabcadrewabc"; + string b = "abc"; + + cout << count(a, b, a.size(), b.size()) << endl; + + return 0; +} \ No newline at end of file