Javascript数组拼接导致内存不足异常
Javascript array splice causing out of memory exception?
我基本上试图通过将数字插入到正确的位置来对数字的输入进行排序(不是100%确定,但这应该是插入排序)。我的理解是,插入到一个数组在javascript中,你需要使用数组拼接方法http://www.w3schools.com/jsref/jsref_splice.asp。
我的代码试图实现我的目标如下:
var N = parseInt(readline());
var powers = [0];
for (var i = 0; i < N; i++) {
var pi = parseInt(readline());
for(var j=i;j<powers.length; j++ ){
if(powers[j]>pi){
powers.splice(j,0,pi);
}
else if(j+1==powers.length){
powers[j+1]=pi;
}
}
}
当我运行这段代码时,我得到一个内存不足的异常。我只是想了解的是我在上面的代码做错了什么。如果我错误地使用了splice方法,并且它是内存泄漏的原因,那么实际发生了什么?我知道还有其他方法可以进行排序,但我特别感兴趣的是对javascript数组进行插入排序。
在您的else
条件中,您正在添加数组,使其变长。这意味着当循环下一次检查powers.length
时,它将是一个更大的数字,这意味着你将再次进入循环体,这意味着你将再次向数组中添加,这意味着你将再次回到循环体,这意味着……你知道这是怎么回事了。: -)
一旦将数字添加到数组中(无论哪个分支),退出循环(例如,使用break
)。
旁注:如果您像目前一样在i
处启动j
,您将无法进行适当的插入排序。i
只是计算用户说他们要输入的条目数,它不是排序的一部分。考虑一下:如果我先输入8,然后输入4会怎样?如果您从i
开始j
,您将跳过8并将4放在错误的位置。j
需要从0开始
相关文章:
- node.js上的过程性2d数组mongoDB插入内存不足
- 从redis到elasticsearch的Node.js脚本副本内存不足
- WebStorm运行非常非常慢,并且不断出现内存不足的错误
- nodejs在处理csv文件时内存不足
- Web工作程序在处理大型数组时内存不足
- 移动野生动物园崩溃日志 - 内存不足
- 我的 JavaScript 暴力递归数独求解器内存不足吗?
- 小程序在 OSX 上的 Node 中内存不足
- Dojo 1.7 构建:内存不足错误
- File Uploads & Chrome (BROWSER) 内存不足
- 由于数组大小,Javascript 主要浏览器的内存不足
- 在 Emscripten'd C++ 程序中处理数据后,如何修复尝试从 Web worker 发回数据时的“内存不足”错
- Node JavaScript 递归内存不足
- IE(any)和Firefox中的内存不足错误,当尝试从父文档包含jQuery时
- 递归 - 节点内存不足
- 想要使用 html5 的画布优化捕获的图像调整大小和旋转的代码,现在在移动设备上发出内存不足警告
- 通过webpack绑定时,获取GC,进程内存不足错误
- 得到“;未捕获的异常:内存不足”;在firebug中执行ajax调用
- 错误处理“;内存不足异常”;在浏览器中
- Javascript数组拼接导致内存不足异常