降低矩阵排序的运行时复杂性



我希望能够按第一个和第二个值的顺序对二维数组进行排序。我已经知道你可以做这样的事情:

arr = [[1,4],[3,5],[4,1],[3,2],[1,1]]
arr = arr.sort((a,b)=>{return a[1]-b[1]});
console.log(arr);
arr = arr.sort((a,b)=>{return a[0]-b[0]});
console.log(arr);

但是,为了简化编码问题的运行时复杂性,我想将它们组合成一种类型。有什么办法可以做到这一点吗?

您可以在不使用三元的情况下获取增量。

var array = [[1, 4], [3, 5], [4, 1], [3, 2], [1, 1]];
array.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
console.log(array);

您可以对每个子数组的第一个元素进行排序,但如果它们相等,则将排序移动到第二个元素。

arr = [[1,4],[3,5],[4,1],[3,2],[1,1]];
arr.sort(function(a, b) {
// sort on second eles if the first ones are identical
// else sort on first...
return (a[0]== b[0]) ? a[1] - b[1] : a[0] - b[0];
})
console.log(arr);

最新更新