Показать сообщение отдельно
  #1 (permalink)  
Старый 31.10.2022, 09:55
Аспирант
Отправить личное сообщение для dc65k Посмотреть профиль Найти все сообщения от dc65k
 
Регистрация: 19.05.2020
Сообщений: 46

Как правильно оптимизировать алгоритм сортировки?
Всем привет.

Задача:
Необходимо найти n самых частых вхождений в массиве.

Решение:
const array = [9, 9, 9, 9, 8, 8, 4, 4, 4, 1, 2];

const getN = (array, n) => {

    const obj = array.reduce((acc, c) => {
        acc[c] ? acc[c] += 1 : acc[c] = 1;
        return acc
    }, {})

    return Object.keys(obj).sort((a, b) => {
        return obj[b] - obj[a];
    }).slice(0, n).map((el) => parseInt(el));
}

console.log(getN(array, 2)); // [9, 4]


Подскажите, как оптимизировать алгоритм до O (n), и не использовать. sort() O (n log2n)?
Ответить с цитированием