【数据结构与算法】复杂度分析

news/2024/7/24 7:48:54

一、数据结构和算法解决的是“快”和“省”的问题,即如何让代码运行得更快,如何更省存储空间。所以「执行效率」是算法一个非常重要的考量指标,如何衡量编写的算法代码的执行效率?时间和空间复杂度分析。

换句话说:时间和空间复杂度是衡量算法代码执行效率的重要指标。

二、事后统计法:把代码跑一遍,通过统计监控得到算法执行的时间占用的内存大小。

(1)事后统计的局限性

1、测试环境中硬件的不同会对测试结果有很大影响

2、测试结果受数据规模的影响很大

      如果测试数据规模太小,测试结果可能无法真实反映算法的性能,例如:小规模的数据排序,插入排序可能反倒会比快速排序更快。

所以,需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法,这就是时间、空间复杂度分析方法。

三、大O复杂度表示法

算法的执行效率粗略地讲就是算法代码的执行时间,从CPU的角度来看,代码执行都是类似的 操作数据->运算->写数据。尽管每行代码对应的cpu执行的个数、执行的时间都不一样,但是这里知识粗略估计,所以可以假设每行代码执行时间都是一样的,为unit-time

function cal(n){
  let sum = 0;
  let i = 1;
  for(i;i<=n;i++){
    sum = sum + i;   
  }
  return sum;
}

2、3行代码分别需要1个unit-time的执行时间,第4、5行都运行n遍,所以需要2n*unit-time的执行时间,所以这段代码总的执行时间就是(2n+2)*unit-time 。

可以看出,代码的执行时间T(n)与每行代码的执行次数成正比。

 

 

 


http://www.niftyadmin.cn/n/497603.html

相关文章

【Vue】动态路由的配置

通过 /detail/:id 的形式&#xff0c;可以创建一个动态路由。 export default new Router({routes: [{path: /detail/:id,name: Detail,component: Detail}] })

魅族Android10内测招募答案,魅族flyme9内测招募答案,魅族16系列flyme9内测招募题目答案免费分享预约 v1.0-手游汇...

魅族flyme9内测招募答案&#xff0c;今天开启的内测&#xff0c;对于新用户们需要完成答题申请&#xff0c;小编在这里为大家更新一些有用的题目和答案&#xff0c;对于您的申请也是有一定帮助的哦&#xff0c;希望您可以获得内测资格。flyme9特色&#xff1a;1.这个版本的更新…

【Safari】如何利用Safari浏览器,调试移动端的页面bug

作为一名前端开发&#xff0c;比较苦恼的是&#xff0c;在pc端用手机模拟器测试没有问题&#xff0c;在手机上却死活不行。遇到这种问题&#xff0c;如何是好&#xff1f; Safari设置 Safari偏好设置 -> 高级&#xff0c;勾选“在菜单中显示开发菜单”&#xff0c; iPhone设…

signature=26c5b2f6d29f4b312a83306be08132e1,modbus 查表法

CRC简单函数如下&#xff1a;unsigned short CRC16(puchMsg, usDataLen)unsigned char *puchMsg ; /* 要进行CRC校验的消息 */unsigned short usDataLen ; /* 消息中字节数 */{unsigned char uchCRCHi 0xFF ; /* 高CRC字节初始化 */unsigned char uchCRCLo 0xFF ; /* 低CRC 字…

【input】如何设置input标签不可编辑(亲测好使)

<input type"text" placeholder"请输入" readonly"readonly" unselectable"on"/> 提示&#xff1a;设置了 input 不显示光标&#xff0c;但当点击 input 时&#xff0c;仍会执行 focus( ) 方法。

【vconsole】H5页面控制台,也被称为移动端调试神器

github地址 &#xff1a;GitHub - Tencent/vConsole: A lightweight, extendable front-end developer tool for mobile web page. vconsole 是腾讯开发的一款针对手机网页的前端开发者调试插件&#xff0c;可以直接在手机上查看 console 日志、网络请求、页面 element 结构、C…

【input】当输入缓存数据时,input会自带背景颜色(亲测有效)

解决方案&#xff1a; input:-webkit-autofill { -webkit-box-shadow: 0 0 0 1000px white inset !important; }加上上面这段代码&#xff0c;即可解决这个bug。

原生js怎么追加html,原生JS改变HTML内容

最近发现总是把原生JS语法和诸多框架库神马的语法搞混&#xff0c;打算暂时弃用各种库&#xff0c;回归到原生来&#xff0c;好好抠一抠所有的细节&#xff0c;跳一跳各种坑&#xff0c;才能飞得更远。PS. 突然想起冰火里面三眼乌鸦对布兰说的那句话——You’ll never walk………