Снижение сложности времени выполнения для сортировки матрицы - PullRequest
0 голосов
/ 15 сентября 2018

Я хочу иметь возможность сортировать двумерный массив в порядке как первого, так и второго значений.Я уже знаю, что вы могли бы сделать что-то вроде этого:

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);

но, чтобы упростить сложность среды выполнения для проблемы кодирования, я хочу объединить их в один вид.Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Вы можете просто взять дельты, не используя тройную.

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);
0 голосов
/ 15 сентября 2018

Вы можете сортировать по первым элементам каждого подмассива, но если они равны, вы перемещаете сортировку ко вторым элементам.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...