Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 插入对象的排序数组_Javascript_Sorting_Complexity Theory - Fatal编程技术网

Javascript 插入对象的排序数组

Javascript 插入对象的排序数组,javascript,sorting,complexity-theory,Javascript,Sorting,Complexity Theory,我有一个近1000个对象的数组,比如{val:N},并通过内置的数组对它们进行排序。prototype.sort: arr.sort(function(a, b) { return a.val - b.val }); 我偶然发现并尝试使用插入排序: for (i = 1; i < arr.length; i++) { var tmp = arr[i], j = i; while (arr[j-1].val > tmp.val) { arr[j

我有一个近1000个对象的数组,比如
{val:N}
,并通过内置的
数组对它们进行排序。prototype.sort

arr.sort(function(a, b) { return a.val - b.val });
我偶然发现并尝试使用插入排序:

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;
}
for(i=1;itmp.val){
arr[j]=arr[j-1];
--j;
}
arr[j]=tmp;
}
但它总是抛出一个错误:
TypeError:无法读取未定义的属性“kills”

在哪里挖掘


提前感谢。

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

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

英雄联盟中的性能数字用于排序数组,该算法(毫不奇怪)需要线性时间,而不是其众所周知的O(N^2)性能。。。