各种排序的学习
来源:互联网 发布:mysql 忘了密码 编辑:程序博客网 时间:2024/06/06 19:54
准备
作为计算时间的工具,本来打算用mocha,但是还不太会用,于是就手撸了一个很low的test函数。
function test(fn,arrNum,circleTimes,arr) { var avgTime = []; var testArr = []; for(let i = 0; i < arrNum; i++) { testArr.push(Math.random() * 100) } arr = arr || testArr; for(let i=0;i<circleTimes;i++) { var start = new Date().getTime(); fn(arr); var end = new Date().getTime(); avgTime.push(end - start) } console.log(avgTime.reduce(function(a,b){a+=b;return a},0)/avgTime.length)}
同时,也借着这个机会用了用webworker,js的单线程阻塞真不是好玩的。
使用webworker有一点需要注意,它必须在服务端上才能使用。
var ww = new Worker("http://worker.js");var asc = new Promise((resolve, reject) => { ww.onmessage = function(e) { console.log(e.data); resolve("该关闭webworker啦"); }})asc.then((msg) => { ww.terminate(); console.log("webpack已关闭");})
快速排序
function fast(arr) {
if (arr.length <= 1) {
return arr
}
var stad = Math.floor((arr.length - 1) / 2);
var stadEl = arr.splice(stad, 1)[0];
var l = [];
var r = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < stadEl) {
l.push(arr[i])
} else {
r.push(arr[i])
}
}
return fast(l).concat(stadEl).concat(fast(r))
}
“`
这里遇到了一个问题,用数组和数字进行比较会极大的损耗性能。之前也完全不知道数组是可以和数字进行比较的。为了了解这个原理,特地在stackoverflow上问了,等待回答。
0 0
- 各种排序的学习
- 算法学习----各种排序算法的实现和对比1
- 算法学习----各种排序算法的实现和对比2
- 经典算法学习:各种排序算法的模板类实现
- 各种数组的排序
- 各种排序的实现
- 各种排序的优缺点
- 各种排序的比较
- 各种排序的原理
- 各种排序的原理
- 常规的各种排序
- 各种排序的实现
- 常见的各种排序
- 各种排序的比较
- 各种排序的比较
- 各种排序的优点
- 各种排序的比较
- 各种排序的比较
- Android BLE Scan failed, reason app registration failed for UUID
- centos7下rabbitmq3.6.6安装
- 自己动手部署区块链-hyperledger/fabric-01
- Java设计模式(7)结构型:装饰模式
- 机器学习博客整理---支持向量机(SVM)实现
- 各种排序的学习
- Java文件上与下载代码-完整代码案例
- 电子罗盘的工作原理及校准
- Android 形形色色的进度条
- nginx配置https/证书更新/ Let's encrypt免费证书(https)以及错误解决!
- kafka文档(12)----0.10.1-Document-文档(4)-configures-producer配置信息
- 使用NodeJS将XML解析成JSON及性能比较
- Lua与ObjC的交互
- 多年java程序员的心得!