Я стараюсь выполнять задания только на основе полученных знаний и вот что выходит
var getSortedArray = function(arr, key){
for (var i = 0; i < arr.length - 1; i++){
for (var j = 0; j < arr.length - 1 - i; j++){
if(arr[j + 1][key] < arr[j][key]){
var flag = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = flag;
}
}
}
ну там где с точкой, должно быть четкое название ключа key. Т.е. сортироваться будут только объекты с ключом, который так и называется “key”, а не передаваемый ключ из аргументов функции
Я решил попрактиковать алгоритмы и написал quicksort. Код проходит первый тест, а на втором выдает Timeout error. Не очень понимаю как это может быть, если тут примеры кода за O(n^2) работают и проходят.
Код ниже:
let quickSort = function(array, key, low=0, high=NaN) {
if (isNaN(high)) {
high = array.length - 1
};
let left = low;
let right = high;
let pivot = array[Math.floor((low+high)/2)][key];
if (left >= 0 && right >= 0 && left < right) {
while (left < right) {
if (array[left][key] < pivot) {
left++;
}
else if (array[right][key] > pivot) {
right--;
}
else {
[array[left], array[right]] = [array[right], array[left]]
};
};
quickSort(array, key, low, right);
quickSort(array, key, left + 1, high);
};
};
let getSortedArray = function(array, key) {
quickSort(array, key);
return array;
};