Как найти x-й наибольший элемент в массиве целых чисел? - PullRequest
0 голосов
/ 12 мая 2019

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

При вызове функции с удовольствием ([- 10, -25, -47, -36,0], 1). Выход должен быть 0, но он дает -47.

Как я могу заставить эту функцию работать как для положительных, так и для отрицательных чисел?

const fun = (x, y) => {
    let sorted = x.sort(function(a, b) {
        return a-b;
    });

    let el = x[y -1];

    console.log(el);    
}

x - массив целых чисел, а y - x-й величайший элемент

1 Ответ

0 голосов
/ 12 мая 2019

Чтобы отсортировать числа в порядке убывания, вы должны использовать b - a (второй элемент минус первый элемент).

Это позволяет вам получить наибольшее число в массиве, например:

const greatest = (x, y) => {
    // After this call, the array `x` will be sorted
    x.sort(function(a, b) {
        return b - a;
    });

    let el = x[y - 1];
    console.log(el);
    
    return el;  
}

// First greatest number among those in the array

greatest([1, 3, 5], 1); // excepted: 5
greatest([30, 5, 11], 1); // excepted: 30
greatest([-3, -19, -11], 1); // excepted: -3
greatest([1000000, 999999, -1000000], 1); // excepted: 1000000
greatest([Number.POSITIVE_INFINITY, 0, 10000 * 10000 * 10000], 1); // excepted: Infinity
greatest([Number.NEGATIVE_INFINITY, 0, -10000 * 10000 * 10000], 1); // excepted: 0
greatest([Number.NaN, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY], 1); // excepted: NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...