首页 > 解决方案 > 在给定的一组数字中以最小的时间复杂度找到第三小的数字

问题描述

这是一个工作算法,可以在给定的一组数字中找到第三小的数字。

我一直在寻找时间复杂度较低的给定要求的另一种解决方案。

这是工作代码:

Numbers = [3,2,55,-10,-55,5,3,2,1,-5,33,9,-1,4,5];
var x = 0;
var y = 0;

function FindThirdSmallestNumber() {


for(var i=0;i<Numbers.length;i++) {

  if (Numbers[i] > Numbers[i+1]) {

    x = Numbers[i];
    y = Numbers[i+1];
      
      Numbers[i] = y; 
      Numbers[i+1] = x;

      i=-1;

  } else {
    //
  }

  

}

console.log(Numbers[2]);

}

FindThirdSmallestNumber();

标签: javascript

解决方案


这个应该简单很多。也不确定这是否更快,但在最简单/最明显的情况下,更少的代码 = 更好的性能。

我只是对数组进行升序排序并根据索引获取值。因此,使用此代码,您可以到达任何地方;只要您的索引没有超出范围,最低,第二低,第三低等。

const input = [3,2,55,-10,-55,5,3,2,1,-5,33,9,-1,4,5];
    

function getLowestByRank(data, rank) {
   data.sort(function(a, b){ return a - b });
        
   return data[rank - 1];
}
    
console.log(getLowestByRank(input, 3))
console.log(getLowestByRank(input, 2))
console.log(getLowestByRank(input, 4))

    


推荐阅读