Сортировка объектов 4/5

Здравствуйте!
Мой вариант:

let getSortedArray = (arr, keyOfObj)=>arr.sort((a,b)=>a[keyOfObj] - b[keyOfObj])

вариант без стрелочных функций

const getSortedArray = function(array, key) {
  return array.sort(function(a, b) {
    return a[key] - b[key];
  });
}

А Вы не знаете случайно почему здесь не работает обращение к ключам через точку? вместо a[key] - b[key] ---- a.key - b .key

ну там где с точкой, должно быть четкое название ключа key. Т.е. сортироваться будут только объекты с ключом, который так и называется “key”, а не передаваемый ключ из аргументов функции

Спасибо большое) Теперь пазл сложился полностью у меня)))

Тому що у об’єкта немає таких ключів, а ключами є змінні, тому береться в [ ]

const getSortedArray = (arr, key)=> arr.sort((a,b)=>a[key]-b[key])

Мое решение использую только пройденный материал:

let getSortedArray = function (array, keyName) {

for (let i=0; i<array.length-1; i++) {
  let swap = array[i];
      for (let j=i+1; j<array.length; j++) {
        if (array[j][keyName] < array[i][keyName]) {
            array[i] = array[j];
            array[j] = swap;
            swap = array[i];            
        }         
      }   
}

return array
}

Моё решение:

let getSortedArray = function (array, name) {
  for (let i = 0; i <= array.length - 2; i++) {
    let minValue = array[i];
    for (let j = i + 1; j <= array.length - 1; j++) {
      if (minValue[name] > array[j][name]) {
        minValue = array[j];
        let swap = array[i];
        array[i] = minValue;
        array[j] = swap;
      }
    }
  }
  return array;
}
1 лайк

Не совсем понятно как ты поменял объекты местами в массиве

Потому что последний элемент массива не нужно сортировать, т.к. все элементы перед ним уже отсортированы. Там в любом случае будет наибольший элемент.

Я решил попрактиковать алгоритмы и написал 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;
};

var getSortedArray = function (mass, key) {
for (var i = 0; i < mass.length - 1; i++) {
for (var j = i + 1; j < mass.length; j++) {
if (mass[i][key] > mass[j][key]) {
var swap = mass[i];
mass[i] = mass[j];
mass[j] = swap;
}
}
}
return mass;
}