插入排序对象数组

时间:2013-01-14 14:13:20

标签: javascript sorting complexity-theory

我有一组近似排序的〜1000个对象,例如{val: N},并按内置Array.prototype.sort对它们进行排序:

arr.sort(function(a, b) { return a.val - b.val });

我偶然发现http://jsperf.com/javascript-sort/16并尝试使用插入排序:

for (i = 1; i < arr.length; i++) {
    var tmp = arr[i],
    j = i;
    while (arr[j-1].val > tmp.val) {
        arr[j] = arr[j-1];
        --j;
    }
    arr[j] = tmp;
}

但它总是会抛出错误:TypeError: Cannot read property 'kills' of undefined

在哪里挖?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你在循环中缺少对j的边界检查:

while (j > 0 && arr[j-1].val > tmp.val) {
    arr[j] = arr[j-1];
    --j;
}
相关问题