Learning MergeSort with JS
Today I learn MergeSort in JS!
I Learned mergeSort because this is the fastest sorting algorithm, as it takes O(n log n) time, which is better than bubble sort with time complexity O(n^2). At the end, I understood the main logic of MergeSort, the divide-and-conquer method. which means an array pass to merge_sort(arr), it starts by dividing into subarrays until it reaches 1 element of subarray, then it starts sorting it .
merge-sort.js
function merge_sort(arr, l=0, h=arr.length-1) {
if(l >= h) return
let m = Math.floor((l + h) / 2)
merge_sort(arr, l, m)
merge_sort(arr, m+1, h)
merge(arr, l, m, h)
}
function merge(arr, l, m, h) {
const tmp = []
let i=l, j=m+1
while(i <= m && j <= h) {
if(arr[i] < arr[j]) tmp.push(arr[i++])
else tmp.push(arr[j++])
}
while(i <= m) tmp.push(arr[i++])
while(j <= h) tmp.push(arr[j++])
for(let k=0; k<tmp.length; k++) arr[l+k] = tmp[k]
}
let arr = [4, 2, 6, 5, 8, 9, 6, 4, 1, 0]
merge_sort(arr)
console.log(arr)
thisi@DanishkSinha MINGW64 ~/OneDrive/Desktop/MASM - C/DSA (main)
$ node merge-sort.js
[
0, 1, 2, 4, 4,
5, 6, 6, 8, 9
]
Comments
Post a Comment