diff --git a/Sorting/mergeSort.java b/Sorting/mergeSort.java index e0129a5..297475f 100644 --- a/Sorting/mergeSort.java +++ b/Sorting/mergeSort.java @@ -1,72 +1,86 @@ +class Sort +{ + void merge(int arr[], int left, int middle, int right) + { + int low = middle - left + 1; + int high = right - middle; + + int L[] = new int[low]; + int R[] = new int[high]; -public class MergeSort { - - public static void main(String args[]) { - int arr[] = {23, 12, 85, 39, 98, 7, 16, 97, 54}; - - System.out.println("Given Array"); - printArray(arr); - - MergeSort ob = new MergeSort(); - ob.sort(arr, 0, arr.length - 1); - - System.out.println("\nSorted array"); - printArray(arr); - } - - void merge(int arr[], int low, int mid, int up) { - int n1 = mid - low + 1; - int n2 = up - mid; - - int Left[] = new int[n1]; - int Right[] = new int[n2]; - - for (int i = 0; i < n1; ++i) - Left[i] = arr[low + i]; - for (int j = 0; j < n2; ++j) - Right[j] = arr[mid + 1 + j]; - - int i = 0, j = 0; - - int k = low; - while (i < n1 && j < n2) { - if (Left[i] <= Right[j]) { - arr[k] = Left[i]; - i++; - } - else { - arr[k] = Right[j]; - j++; - } - k++; - } - while (i < n1) { - arr[k] = Left[i]; - i++; - k++; - } - while (j < n2) { - arr[k] = Right[j]; - j++; - k++; - } - } + int i = 0, j = 0; + + for (i = 0; i < low; i++) + { + L[i] = arr[left + i]; + } + for (j = 0; j < high; j++) + { + R[j] = arr[middle + 1 + j]; + } + + + int k = left; + i = 0; + j = 0; - void sort(int arr[], int low, int up) { - if (low < up) { - int mid =low + (up-low)/2; + while (i < low && j < high) + { + if (L[i] <= R[j]) + { + arr[k] = L[i]; + i++; + } + else + { + arr[k] = R[j]; + j++; + } + k++; + } + + while (i < low) + { + arr[k] = L[i]; + i++; + k++; + } + + while (j < high) + { + arr[k] = R[j]; + j++; + k++; + } + } + - sort(arr, low, mid); - sort(arr, mid + 1, up); + void mergeSort(int arr[], int left, int right) + { + int middle; + if (left < right) { + middle = (left + right) / 2; + + mergeSort(arr, left, middle); + mergeSort(arr, middle + 1, right); + + merge(arr, left, middle, right); + } + } + + void display(int arr[]) + { + for (int i=0; i +using namespace std; + +void helper(vector a, vector> &ans, int idx) +{ + if (idx == a.size()) + { + /* code */ + ans.push_back(a); + return; + } + for (int i = 0; i < a.size(); i++) + { + if(i != idx and a[i] == a[idx]) + continue; + swap(a[i], a[idx]); + } + + +} + +vector> permute(vector nums){ + sort(nums.begin(), nums.end()); + vector> ans; + helper(nums, ans , 0); + return ans; +} +int main() +{ + int n; + cin>>n; + vector a(n); + for(auto &i : a) + cin>> i; + vector> res = permute(a); + for(auto v : res) + { + for(auto i : v) + cout< +#include +using namespace std; +vector> ans; +void permute(vector &a , int idx) +{ + if(idx == a.size()){ + ans.push_back(a); + return; + } + for (int i = idx; i < a.size(); i++) + { + /* code */ + swap(a[i],a[idx]); + permute(a,idx+1); + swap(a[i], a[idx]); + } + return; +} +int main() +{ + int n; +cin>>n; + vector a(n); + for(auto &i : a) + cin>>i; + permute(a, 0); + for(auto v: ans){ + for(auto i : v) + cout< +#include +using namespace std; +vector> ans; +void permute(vector &a , int idx) +{ + if(idx == a.size()){ + ans.push_back(a); + return; + } + for (int i = idx; i < a.size(); i++) + { + /* code */ + swap(a[i],a[idx]); + permute(a,idx+1); + swap(a[i], a[idx]); + } + return; +} +int main() +{ + int n; +cin>>n; + vector a(n); + for(auto &i : a) + cin>>i; + sort(a.begin(), a.end()); + do + { + /* code */ + ans.push_back(a); + } while (next_permutation(a.begin(), a.end())); + + for(auto v: ans){ + for(auto i : v) + cout< +using namespace std; + +bool isSafe(int** arr, int x , int y , int n){ + if (x>n; + + int** arr=new int*[n]; + for (int i = 0; i < n; i++) + { + arr[i]= new int[n]; + } + for (int i = 0; i < n; i++) + { + for (int j = 0; j < n; j++) + { + cin>>arr[i][j]; + } + + } + int** solArr = new int*[n]; + for (int i = 0; i < n; i++) + { + solArr[i]=new int[n]; + for (int j = 0; j < n; j++) + { + solArr[i][j]=0; + } + + + } + if (ratinMaze(arr, 0 , 0 , n , solArr)) + { + for (int i = 0; i < n; i++) + { + for (int j = 0; j < n; j++) + { + cout<