【问题标题】:javascript merge/sort fatal errorjavascript合并/排序致命错误
【发布时间】: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


【解决方案1】:

查看shift 的文档。它删除了第一个元素。因此,如果您只访问 a[0] 并且不删除它,那么 while 循环将永远不会退出。

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 2013-10-12
    • 1970-01-01
    • 2018-10-18
    • 2015-12-18
    • 2016-05-08
    • 2015-06-12
    • 2023-03-16
    相关资源
    最近更新 更多