Skip to content

Instantly share code, notes, and snippets.

@zeraf29
Created June 11, 2017 14:26
Show Gist options
  • Save zeraf29/e50daa6db591324aac7fd8cd49a7c836 to your computer and use it in GitHub Desktop.
Save zeraf29/e50daa6db591324aac7fd8cd49a7c836 to your computer and use it in GitHub Desktop.
병합정렬
// Takes in an array that has two sorted subarrays,
// from [p..q] and [q+1..r], and merges the array
var merge = function(array, p, q, r) {
// This code has been purposefully obfuscated,
// as you'll write it yourself in next challenge.
var a=[],b=[],c=p,d,e;for(d=0;c<=q;d++,c++){a[d]=array[c];}for(e=0;c<=r;e++,c++){b[e]=array[c];}c=p;for(e=d=0;d<a.length&&e<b.length;){if(a[d]<b[e]){array[c]=a[d];d++;} else {array[c]=b[e]; e++;}c++; }for(;d<a.length;){array[c]=a[d];d++;c++;}for(;e<b.length;){array[c]=b[e];e++;c++;}
};
// Takes in an array and recursively merge sorts it
var mergeSort = function(array, p, r) {
if((r-p)+1 >1){
var half = Math.floor((r+p)/2);
mergeSort(array,p,half);//
mergeSort(array,half+1,r);//
merge(array,p,half,r);
}
};
var array = [14, 7, 3, 12, 9, 11, 6, 2];
mergeSort(array, 0, array.length-1);
println("Array after sorting: " + array);
Program.assertEqual(array, [2, 3, 6, 7, 9, 11, 12, 14]);
var array = [14, -7, 3, 50, 1, 11, 0, 2];
mergeSort(array, 0, array.length-1);
println("Array after sorting: " + array);
Program.assertEqual(array, [-7, 0, 1, 2, 3, 11, 14, 50]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment