Улучшите производительность циклов, чтобы найти n-е наименьшее целое число в очень больших массивах - PullRequest
0 голосов
/ 03 июня 2018

Мне нужно найти n-е наименьшее целое число (n) в массиве (arr).Это задание на Codewars, поэтому, если кто-то может помочь мне с подсказками, а не с решением, будет очень признателен.Код, который я написал, работает отлично, но время ожидания при обработке огромных списков (из 1 миллиона элементов), поэтому я должен повысить его эффективность.Я использовал while вместо for, и я изменил for с увеличения на уменьшение без заметной разницы.Я не впервые борюсь с эффективностью кода на Codewars, поэтому мне бы очень хотелось узнать, как с этим справиться.Это ката https://www.codewars.com/kata/the-nth-smallest-integer/train/javascript, спасибо за помощь!

function nthSmallest(arr, n) {
    var b = [];
    var len = arr.length

    for (var i = 0; i < len; i++) {
        if (b.indexOf(arr[i]) === -1) {
            b.push(arr[i]);
        }
    }

    if (n > b.length) {
        return -1;
    }


  return b.sort(function(a, b) {return a - b;})[n - 1];
}

    nthSmallest([455555, 455555, 2222222, 2222223, 3333333, 9879799, 
79977979, 79977979, 79977979, 79977979,79977979,
79977979,   79977979,79977979,],3); // returns '2222223', the 3rd smallest integer 
...