diff --git a/DSA practice/Anagram.cpp b/DSA practice/Anagram.cpp new file mode 100644 index 0000000..0971dac --- /dev/null +++ b/DSA practice/Anagram.cpp @@ -0,0 +1,28 @@ +#include +using namespace std; + +int main() { + string str1, str2; + + cout << "Enter the first string: "; + cin >> str1; + + cout << "Enter the second string: "; + cin >> str2; + + if (str1.length() != str2.length()) { + cout << "The strings are not anagrams." << endl; + return 0; + } + + sort(str1.begin(), str1.end()); + sort(str2.begin(), str2.end()); + + if (str1 == str2) { + cout << "The strings are anagrams." << endl; + } else { + cout << "The strings are not anagrams." << endl; + } + + return 0; +} diff --git a/DSA practice/Radix Sort.cpp b/DSA practice/Radix Sort.cpp new file mode 100644 index 0000000..09f9f19 --- /dev/null +++ b/DSA practice/Radix Sort.cpp @@ -0,0 +1,54 @@ +#include +using namespace std; + +int getMax(vector& arr) { + int mx = arr[0]; + for (int i = 1; i < arr.size(); i++) + if (arr[i] > mx) + mx = arr[i]; + return mx; +} + +void countSort(vector& arr, int exp) { + int n = arr.size(); + vector output(n); + int count[10] = {0}; + + for (int i = 0; i < n; i++) + count[(arr[i] / exp) % 10]++; + + for (int i = 1; i < 10; i++) + count[i] += count[i - 1]; + + for (int i = n - 1; i >= 0; i--) { + output[count[(arr[i] / exp) % 10] - 1] = arr[i]; + count[(arr[i] / exp) % 10]--; + } + + for (int i = 0; i < n; i++) + arr[i] = output[i]; +} + +void radixSort(vector& arr) { + int m = getMax(arr); + for (int exp = 1; m / exp > 0; exp *= 10) + countSort(arr, exp); +} + +int main() { + int n; + cout << "Enter number of elements: "; + cin >> n; + + vector arr(n); + cout << "Enter the elements: "; + for (int i = 0; i < n; i++) + cin >> arr[i]; + + radixSort(arr); + + cout << "Sorted array: "; + for (int i = 0; i < arr.size(); i++) + cout << arr[i] << " "; + return 0; +}