だから私は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 要素の配列は小さいと思います)? また、スタイルの提案もいただければ幸いです。