JS实现对数器
2018-08-10 11:20:59来源:博客园 阅读 ()
对数器的概念和使用
对数器一般用于验证你写的算法是否正确,因为自己写的测试用例可能写的考虑不够全面。
0.有一个你想测试的方法a
1.实现一个绝对正确但是时间复杂度不好的方法b
2.实现一个随机样本产生器
3.实现比对的方法
4.把方法a和方法b比对很多次来验证方法a是否正确
5.如果有一个样本比对出错,打印样本分析是哪个方法出错
6.当样本数量很多时,比对测试依然正确,可以确定方法a已经正确。
举例代码
假设我们需要测试我们自己写的插入排序
//要测试的方法 function insertSort(arr) { for (let i = 1; i < arr.length; i++) { for (let j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) { [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; } } } //正确的方法 function rightMethod(arr) { arr.sort((a, b)=>a - b); } //随机数组生成器,size为最大长度,value为最大值 function generateRandomArray(size, value) { //生成长度随机的数组 let arr = new Array(Math.floor((size + 1) * Math.random())); for (let i = 0; i < arr.length; i++) { arr[i] = Math.floor((value + 1) * Math.random()); } return arr; } //拷贝数组方法 function copyArray(arr) { if (arr == null) { return null; } return [].concat(arr); } //比对方法 function isEqual(arr1, arr2) { if ((arr1 == null && arr2 != null ) || (arr1 != null && arr2 == null)) { return false; } if (arr1 == null && arr2 == null) { return true; } if (arr1.length != arr2.length) { return false; } for (let i = 0; i < arr1.length; i++) { if (arr1[i] != arr2[i]) { return false } } return true; } //测试 function Test() { let testTimes = 5000; let size = 10; let value = 100; let succeed = true; for (let i = 0; i < testTimes; i++) { let arr1 = generateRandomArray(size, value); let arr2 = copyArray(arr1); let arr3 = copyArray(arr1); insertSort(arr1); rightMethod(arr2); if (!isEqual(arr1, arr2)) { succeed = false; console.log(arr3); break; } } console.log(succeed ? "nice" : "Fucking fucked"); } Test();
如果输入nice说明所有测试用例正确。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js防止表单重复提交实现代码 2020-03-29
- 基于JQuery的多标签实现代码 2020-03-29
- js实现翻页后保持checkbox选中状态的实现方法 2020-03-25
- NiftyCube实现圆角边框的方法 2020-03-20
- JS实现标签页切换效果 2020-03-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash