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
- JavaScript获取数组最小两项之和
- 两有序数组两两之和的最小k个值, 最小堆解法之完整版
- 最小数组之和
- 给定两个数组,交换它们的元素,使得两数组元素之和的差绝对值最小
- 微软面试题:求两升序排序数组两两数字之和中,最小的k个值
- 交换元素,使两数组之和的差最小 【微软面试100题 第三十二题】
- JavaScript-3.1--获取用户的输入,输出用户输入的两数之和---ShinePans
- 取数组/序列之和k最小
- JavaScript获取数组中最大(最小)值
- 两数组最小距离问题
- JavaScript趣题:求解最大子数组之和
- 求数组的两段子数组之和的最大值
- Java常识求阶层!的和 ,获取某个数组中的最小值,定义数组,获得成绩之和,平均成绩,最小成绩,最大成绩。等问题大全
- 两个有序数组元素之和的最小K个值
- 交换两数组元素使两数组和差值最小
- 判断数组中是否存在两数之和等于X
- LeetCode 题目之 数组两数之和问题
- 华为OJ 两组数组相加之和相等
- eclipse集成tomcat运行web时提示引入jar包的类找不到的解决办法
- java题库5
- WindowsAPI函数大全
- Python 列表解析
- SGU 200 Cracking RSA(高斯消元+高精度)
- JavaScript获取数组最小两项之和
- SpringMVC Controller 介绍
- C++ 引用MFC问题
- openFileInput——从文件中读取数据
- 洛谷 P1631 序列合并
- 修改代码的艺术 读书笔记(二,修改现有代码的四种技巧)
- 音效单例类的实现和调用
- HDU 2962
- python学习——编写web框架