【发布时间】:2015-07-11 23:21:50
【问题描述】:
我在写归并排序算法,在归并辅助函数中,我有如下比较语句:
function merge(a,b){
var result = [];
while(a.length && b.length){
result.push(a[0] < b[0] ? a.shift() : b.shift()); // you can't just grab a[0] or b[0]
//as it results in a fatal error.
}
return, etc.
}
为什么当我输入 a[0] 而不是 'a.shift()' 时,会导致致命错误?是不是因为你正在对条件子句中的东西做某事?
【问题讨论】:
-
猜测
a[0]不会从a中删除条目,因此您最终会陷入无限循环,这会使result有点超出预期。
标签: javascript algorithm sorting merge mergesort