JavaScript获取数组最小两项之和

来源:互联网 发布:js点击函数 编辑:程序博客网 时间:2024/05/12 18:39

在一些应用,如构建哈夫曼树,有需求获取序列中最小的两项,作为叶子,自顶向下构造树。

在这里,我抽出一个子问题,即如何获取序列的最小两项,并且求和。

最简单的方法,应该是先对序列从小到大排序,然后取出前两个数,再求和。

这样做,如果序列长度过大,那么效率肯定会降低。

即使是一些优秀的排序算法,时间复杂度也是N*logN。

我的改进方法比较简单,对序列最多进行两次冒泡即可,这样效率可以提升为N。

实现代码如下:

//Sum of two lowest integersfunction sumTwoSmallestNumbers(numbers) {  //bubble twice    for(var i=0;i<2;i++){for(var j=0;j<numbers.length-1-i;j++){if(numbers[j] < numbers[j+1]){var temp = numbers[j];numbers[j] = numbers[j+1];numbers[j+1] = temp;}}}return numbers[numbers.length-1] + numbers[numbers.length-2];};
应该还可以小小地改进:
如果第一次冒泡没有发生交换,则可以立即退出外层循环,返回值。

0 0
原创粉丝点击