js 3种归并操作的实例代码
2013-10-30 00:00
621 查看
第一种:
第二种:
第三种:
经过测试2个有序20W长度的数组归并耗时都在15毫秒以下。
以下有几条经验(在大量操作的时候才能体现,平时不需要做这样的优化。代码可读性还是第一原则)
1:数组的concat方法比直接for循环push要慢。
2:for循环比while循环快。
3:var a = b || 3; //这种操作很消耗时间
4: break,continue 在已确定不需要再循环时很耗时。
/**良哥的*/ function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), sumLen = aLen + bLen, result = [], ap = 0, bp = 0; while (result.length < sumLen) { if (ap < aLen && bp < bLen) { if(a[ap] > b[bp]){ result.push(b[bp++]); } else { result.push(a[ap++]); } } else if (!(ap < aLen)){ while(bp < bLen){ result.push(b[bp++]); } } else if (!(bp < bLen)){ while(ap < aLen){ result.push(a[ap++]); } } } return result; }
第二种:
/**鲁军*/ function merge(arr1, arr2){ var i = 0; var j = 0; var c = 0; var k; var len1 = arr1.length; var len2 = arr2.length; var arr = []; for(;i<len1 && j<len2;){ if( arr1[i] > arr2[j] ){ arr.push( arr2[j] ); j++; }else{ arr.push( arr1[i] ); i++; } //if(i==len1 || j==len2){ // break; //} } if(i==len1){ //arr = arr.concat(arr2.slice(j)); for(k=j; k<len2; k++){ arr.push( arr2[k] ); } } if(j==len2){ //arr = arr.concat(arr1.slice(i)) for(k=i; k<len1; k++){ arr.push( arr1[k] ); } } return arr; }
第三种:
/*金锐的*/ function merge(a,b){ var x = 0; var l = 0; var list = []; var aLen = a.length; var bLen = b.length; for(var i = 0; i < bLen; i++){ for(var j = x; j < aLen; j++){ if(b[i] < a[j]){ list.push(b[i]); l = i; break; }else{ list.push(a[j]); x++; } } } if(x == a.length){ for(var y = l; y < bLen; y++){ list.push(b[y]); } }else{ for(var z = x; z < aLen; z++){ list.push(a[z]); } } return list; }
经过测试2个有序20W长度的数组归并耗时都在15毫秒以下。
以下有几条经验(在大量操作的时候才能体现,平时不需要做这样的优化。代码可读性还是第一原则)
1:数组的concat方法比直接for循环push要慢。
2:for循环比while循环快。
3:var a = b || 3; //这种操作很消耗时间
4: break,continue 在已确定不需要再循环时很耗时。
相关文章推荐
- js 3种归并操作的实例代码
- Js各种节点操作实例演示代码
- JS操作数据库的实例代码
- js获取url参数代码实例分享(JS操作URL)
- Mocha+Unit.js操作实例代码
- Native.js获取监听开关等操作Android蓝牙设备实例代码
- JS操作Cookie写入和读取实例代码
- Mocha+Unit.js操作实例代码
- JS操作Cookie写入和读取实例代码
- JS操作Cookie写入和读取实例代码
- JS操作数据库的实例代码
- js获取url参数代码实例分享(JS操作URL)
- JS操作数据库的实例代码
- JS操作Cookie写入和读取实例代码
- 终端自适应js操作代码实例,不同屏幕比例尺寸
- php使用正则过滤js脚本代码实例
- javaScript+turn.js实现图书翻页效果实例代码
- ios--网页js调用oc代码+传递参数+避免中文参数乱码的解决方案(实例)
- js实现页面打印功能实例代码(附去页眉页脚功能代码)
- 用js代码改变单选框选中状态的简单实例