From 01b0887014623857171e5ce12000ce3315353918 Mon Sep 17 00:00:00 2001 From: Arpan Biswas <99377659+Geeks-Arpan@users.noreply.github.com> Date: Sat, 21 Oct 2023 07:18:25 +0530 Subject: [PATCH 1/2] Create Merge Sort --- algorithms/javascript/Merge Sort | 94 ++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 algorithms/javascript/Merge Sort diff --git a/algorithms/javascript/Merge Sort b/algorithms/javascript/Merge Sort new file mode 100644 index 0000000..b554287 --- /dev/null +++ b/algorithms/javascript/Merge Sort @@ -0,0 +1,94 @@ +// JavaScript program for Merge Sort + +//TC - O(N log(N)) +//SC - O(N) + +// Merges two subarrays of arr[]. +// First subarray is arr[l..m] +// Second subarray is arr[m+1..r] +function merge(arr, l, m, r) +{ + var n1 = m - l + 1; + var n2 = r - m; + + // Create temp arrays + var L = new Array(n1); + var R = new Array(n2); + + // Copy data to temp arrays L[] and R[] + for (var i = 0; i < n1; i++) + L[i] = arr[l + i]; + for (var j = 0; j < n2; j++) + R[j] = arr[m + 1 + j]; + + // Merge the temp arrays back into arr[l..r] + + // Initial index of first subarray + var i = 0; + + // Initial index of second subarray + var j = 0; + + // Initial index of merged subarray + var k = l; + + while (i < n1 && j < n2) { + if (L[i] <= R[j]) { + arr[k] = L[i]; + i++; + } + else { + arr[k] = R[j]; + j++; + } + k++; + } + + // Copy the remaining elements of + // L[], if there are any + while (i < n1) { + arr[k] = L[i]; + i++; + k++; + } + + // Copy the remaining elements of + // R[], if there are any + while (j < n2) { + arr[k] = R[j]; + j++; + k++; + } +} + +// l is for left index and r is +// right index of the sub-array +// of arr to be sorted +function mergeSort(arr,l, r){ + if(l>=r){ + return; + } + var m =l+ parseInt((r-l)/2); + mergeSort(arr,l,m); + mergeSort(arr,m+1,r); + merge(arr,l,m,r); +} + +// Function to print an array +function printArray( A, size) +{ + for (var i = 0; i < size; i++) + console.log( A[i] + " "); +} + + +var arr = [ 12, 11, 13, 5, 6, 7 ]; + var arr_size = arr.length; + + console.log( "Given array is "); + printArray(arr, arr_size); + + mergeSort(arr, 0, arr_size - 1); + + console.log( "Sorted array is "); + printArray(arr, arr_size); From d8f994f47c56b0684f9784198631fdc8fe5db3ef Mon Sep 17 00:00:00 2001 From: Arpan Biswas <99377659+Geeks-Arpan@users.noreply.github.com> Date: Sat, 21 Oct 2023 07:40:11 +0530 Subject: [PATCH 2/2] Create Quick Sort --- algorithms/javascript/Quick Sort | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 algorithms/javascript/Quick Sort diff --git a/algorithms/javascript/Quick Sort b/algorithms/javascript/Quick Sort new file mode 100644 index 0000000..23bcc73 --- /dev/null +++ b/algorithms/javascript/Quick Sort @@ -0,0 +1,49 @@ +// Quick sort in javascript + +//TC - O(N2) +//SC - O(1) + + +// Function to partition the array and return the partition index +function partition(arr, low, high) { + // Choosing the pivot + let pivot = arr[high]; + + // Index of smaller element and indicates the right position of pivot found so far + let i = low - 1; + + for (let j = low; j <= high - 1; j++) { + // If current element is smaller than the pivot + if (arr[j] < pivot) { + // Increment index of smaller element + i++; + [arr[i], arr[j]] = [arr[j], arr[i]]; // Swap elements + } + } + + [arr[i + 1], arr[high]] = [arr[high], arr[i + 1]]; // Swap pivot to its correct position + return i + 1; // Return the partition index +} + +// The main function that implements QuickSort +function quickSort(arr, low, high) { + if (low < high) { + // pi is the partitioning index, arr[pi] is now at the right place + let pi = partition(arr, low, high); + + // Separately sort elements before partition and after partition + quickSort(arr, low, pi - 1); + quickSort(arr, pi + 1, high); + } +} + +// Driver code +let arr = [10, 7, 8, 9, 1, 5]; +let N = arr.length; + +// Function call +quickSort(arr, 0, N - 1); +console.log("Sorted array:"); +console.log(arr.join(" ")); + +//Output - 1 5 7 8 9 10