的src/QuickSort.js的RangeError:最大調用堆棧大小使用Array.forEach
var quick_sort = function(unsorted) {
if (unsorted.size <= 1)
return unsorted;
var pivot = unsorted.pop();
var less = new Array();
var greater = new Array();
unsorted.forEach(function(element){
if (element > pivot)
less.push(element);
else
greater.push(element);
});
return quick_sort(less) + [pivot] + quick_sort(greater);
};
規格/ QuickSort.js超過
describe("#quick_sort", function() {
it("should sort the unsorted array", function() {
var unsorted = [8, 2, 10, 5, 4, 9, 7, 1, 6, 3];
var sorted = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
expect(quick_sort(unsorted)).toEqual(sorted);
});
});
錯誤消息
RangeError: Maximum call stack size exceeded
at Array.forEach (native)
at quick_sort (file://localhost/Users/jasonkim/projects/algorithm-everyday/quick_sort/javascript/src/QuickSort.js:9:12)
at quick_sort (file://localhost/Users/jasonkim/projects/algorithm-everyday/quick_sort/javascript/src/QuickSort.js:16:10)
我想用jasminejs測試快速排序功能。我收到上面的錯誤。我的終止條件高於if (unsorted.size <= 1) { return unsorted }
。我不知道爲什麼它沒有終止並進入無限循環。
不知道jasmine.js,確實'unsorted.size'實際上意味着'unsorted.length'?另外,數組上的'+'運算符在純JS中看起來並不那麼有效。 – Passerby
@帕瑟比,謝謝!將其作爲答案,我會接受它。 Ruby語法正在接近我。 –