Skip to content

Instantly share code, notes, and snippets.

@AleksandrChukhray
Created September 2, 2020 15:48
Show Gist options
  • Select an option

  • Save AleksandrChukhray/169d38aa45d6b141a0881183dd2d9f89 to your computer and use it in GitHub Desktop.

Select an option

Save AleksandrChukhray/169d38aa45d6b141a0881183dd2d9f89 to your computer and use it in GitHub Desktop.
function MergeSort(array){
if (array.length === 2){
if(array[0] > array[1]) return [array[1], array[0]];
return array;
};
let arrLength1 = Math.floor(array.length/2);
let arr1 = array.slice(0, arrLength1);
let arr2 = array.slice(arrLength1, array.length);
let sortArr1 = arr1.length === 1 ? arr1 : MergeSort(arr1);
let sortArr2 = arr2.length === 1 ? arr2 : MergeSort(arr2);
return Merge(sortArr1, sortArr2);
}
function Merge(arr1, arr2){
let length = arr1.length + arr2.length;
let k = 0;
let j = 0;
let sortedArray = [];
for(let i = 0; i < length; i++){
if(k === arr1.length) {
sortedArray = sortedArray.concat(arr2.slice(j, arr2.length));
break;
}
if(j === arr2.length){
sortedArray = sortedArray.concat(arr1.slice(k, arr1.length));
break;
}
if(arr1[k] <= arr2[j]){
sortedArray[i] = arr1[k];
k++;
}else{
sortedArray[i] = arr2[j];
j++;
}
}
return sortedArray;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment