I am trying to write a recursive function that sorts an array. I keep getting a “too much recursion” error in Firefox.
JS code:
function newSort(arr)
{
if (arr.length == 1)
{
return arr;
}
else
{
var low = 0;
var high = arr.length – 1;
var mid = parseInt((low + high) / 2);
var left = new Array(mid);
var right = new Array(arr.length – mid);
for (var i = 0; i < mid; i++)
{
left[i] = arr[i];
}
var counter = 0;
for (var i = mid; i < arr.length; i++)
{
right[counter] = arr[i];
counter++;
}
newSort(left);
newSort(right);
var result = merge(left, right)
return result;
}
function merge(a1, a2)
{
var a3 = new Array();
var i = 0;
while (a1.length != 0 && a2.length != 0)
{
if (a1[0] < a2[0])
{
a3[i] = a1.shift();
}
else
{
a3[i] = a2.shift();
}
i++;
}
// Concatenate remaining elements
if (a1.length == 0)
{
a3 = a3.concat(a2);
}
else if (a2.length == 0)
{
a3 = a3.concat(a1);
}
return a3;
}