Skip to content

Instantly share code, notes, and snippets.

@ram-nad
Created March 26, 2020 16:40
Show Gist options
  • Save ram-nad/9ce519a1d7c57c125305ce4b1e7cc46b to your computer and use it in GitHub Desktop.
Save ram-nad/9ce519a1d7c57c125305ce4b1e7cc46b to your computer and use it in GitHub Desktop.
proc mergesort(n: int, arr: [1..n] int){
if(n == 1){
return;
}
var midl = n / 2;
var midr = n - midl;
var left: [1..midl] int;
var right: [1..midr] int;
for i in 1..midl{
left(i) = arr(i);
}
for i in 1..midr{
right(i) = arr(midl+i);
}
mergesort(midl, left);
mergesort(midr, right);
var i = 1;
var j = 1;
var k = 1;
while(i <= midl && j <= midr){
if(left(i) < right(j)){
arr(k) = left(i);
i += 1;
}else{
arr(k) = right(j);
j += 1;
}
k += 1;
}
while(i <= midl){
arr(k) = left(i);
k += 1;
i += 1;
}
while(j <= midr){
arr(k) = right(j);
k += 1;
j += 1;
}
}
var a = [1, 9, 5, -3, 6, -1, 7];
mergesort(7, a);
writeln(a);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment