Hi,
I have this merge sort function in x10:
public def mergeSort(tmp:GrowableRail[Pair[String, Int]],
low: Int, high: Int)
{
val lo:Int = low;
val hi:Int = high;
val N:Int = hi - lo; //elements to sort
if(N <= 1)
{
return 0;
}
val mid:Int = lo + (N/2); //middle index
//recursively sort left and right halves
mergeSort(tmp, lo, mid);
mergeSort(tmp, mid, hi);
var aux: GrowableRail[Pair[String, Int]] = new
GrowableRail[Pair[String,Int]](N)
var i:Int = lo;
var j:Int = mid;
//merge 2 sorted subarrays
for(var k:Int = 0; k < N; k++)
{
if(i == mid)
{
aux.set(tmp(j++), k);
}
else if(j == hi)
{
aux.set(tmp(i++), k);
}
else if(tmp(j).first < tmp(i).first)
{
aux.set(tmp(j++), k);
}
else
{
aux.set(tmp(i++), k);
}
}
//copy back into original array
for(var k:Int = 0; k < N; k++)
{
tmp.set(aux.apply(k), (lo+k));
}
}
I have an almost exact copy of it in Java. The Java version works fine so I
thought I could just rewrite it in x10, but it doesn't seem to be working at
all. Is there something about recursion in x10 that is different than Java?
Thanks,
Han Dong
[email protected]
University of Maryland '10
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
X10-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/x10-users