所以我对javascript(来自c)非常陌生,刚刚开始学习语法,练习一些练习。我实现了一个快速排序算法:
function sort(a)
{
var _sort = function(l, r)
{
if (l >= r - 1)
return;
var p = r - 1;
var y = l;
var tmp;
for (var i = l; i < r - 1; i++)
if (a[i] < a[p])
{
tmp = a[i];
a[i] = a[y];
a[y] = tmp;
y++;
}
tmp = a[y];
a[y] = a[r - 1];
a[r - 1] = tmp;
_sort(l, y);
_sort(y + 1, r);
}
_sort(0, a.length);
}
它适用于小型数组,但是对于超过 5000 个元素的数组,我会超出堆栈大小限制。我试图增加它,但没有奏效。我怀疑我实现算法的方式有问题,可以吗?
我的问题是,我应该如何实现算法,或者绕过堆栈大小限制(我认为 5000 个元素的数组很小),以使其工作?我也会很高兴有任何风格建议。