时间复杂度,超级详细 男娘i 2024-04-08 12:42 45阅读 0赞 #### 目录 #### * * * 6.2 算法的时间复杂度 * * 6.2.1 时间频度 * 6.2.2 时间复杂度 * 6.2.3 常见的时间复杂度 * 6.3 最坏时间复杂度 * 6.3 空间复杂度 * * 6.3.1 基本jieshao * 本次时间复杂度教程出自韩顺平的数据结构和算法教程 #### 6.2 算法的时间复杂度 #### **度量一个程序(算法)执行的两种方法** * 1)事后统计的方法 这种方法可行,但是有两个问题:一是想对设计的算法的运行性能进行评测,需要实际运行该程序:二是所得时间统计量依赖计算机的硬件、软件等环境因素,这种方式要在同一台计算机相同状态运行下,才能比较哪个算法速度快 * 2)事前估算的方法 通过分析某个算法的时间复杂度来判断哪个算法更优 。 ##### 6.2.1 时间频度 ##### **基本介绍** 时间频度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度记为T(n)。 ![基本介绍][551e5b9c48924e05b757a03932b1656f.png] 先给出几个结论: **结论:忽略常数项** ![在这里插入图片描述][aae2f926017b4dbda4e81cdd6350128b.png] **结论:忽略低次项** ![在这里插入图片描述][9bdf2506d6af45a3a169b655db31325d.png] **结论:忽略系数** ![在这里插入图片描述][df2d6463c40546288fbe97d3ad64979d.png] ##### 6.2.2 时间复杂度 ##### * 1)一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近无穷大时,T(n)/ f(n)的极限值不等于零的常熟,则称f(n)是T(n)同数量级别的函数。记作T(n) = O (f(n)),称 O (f(n))为算法的渐进时间复杂度,简称时间复杂度。 * 2)T(n)不同,但是时间复杂度可能相同。 * 计算时间复杂度的方法: * 用常数1代替运行时间中所有加法常数 * 修改后的运行次数函数中,只保留最高阶项 * 去除最高阶项的系数。 ![在这里插入图片描述][51ee0fda2b524bc58fb39d9f7f9c7d8b.png] ##### 6.2.3 常见的时间复杂度 ##### 1)常数阶O(1) 2)对数阶O(log2n) 3)线性阶O(n) 4)线性对数阶O(nlog2n) 5)平方阶O(n²) 6)立方阶O(n³) 7)k次方阶O(n的k次方) 8)指数阶O(2的n次方) //**一定要死死记住时间复杂的大小顺序,最好把它刻在DNA上** ![在这里插入图片描述][1c69b91223b04ac1a53c964dc3f9b0b0.png] **1)常数阶O(1)** 无论代码执行了多少行,只要没有循环等复杂结构,那么这个代码的时间复杂度就是O(1) ![在这里插入图片描述][93c69d02f94545038c7df7b59c5f004b.png] **2)对数阶O(log2n)** 例子:a的x次方等于N,那么x叫以a为底N的对数,记作x = logaN。其中 a叫对数的底数,N 叫做真数,x叫做“以a为底N的对数” ![在这里插入图片描述][902b65b2e8bd44fc9d3816c367dc8feb.png]**说实话,对数阶O(log2n),我坐在电脑前枯想十几分都没有头绪,于是我尝试动手画一下操作流程,大概就懂了七八分。** ![在这里插入图片描述][bfec1ef76e2a487f8addc43fbaccc00b.png] **3)线性阶O(n)** ![在这里插入图片描述][0a60f3a8f92943c48d13ad41a6d535e5.png] **4)线性对数阶O(nlog2n)** ![在这里插入图片描述][e2200246b4284e6189379cf33d0907ed.png] **5)平方阶O(n²)** ![在这里插入图片描述][6dbe0e878bce45c2beb6980450eaeda2.png] 之后的我就不截图了,这几个都比较好理解,所以就不一一放出来了 **6)立方阶O(n³)** **7)k次方阶O(n的k次方)** **8)指数阶O(2的n次方)** ##### 6.3 最坏时间复杂度 ##### **平均时间复杂度和最坏时间复杂度** 1)平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,该算法的运行时间 2)最坏情况下的时间复杂度称为最坏时间复杂度。一般讨论的时间复杂度均是以最坏情况下的时间复杂度,原因:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的界限,这就保证了算法 的运行时间不会比最坏情况更长 3)平均时间复杂度和最坏时间复杂度是否一致,和算法有关 ![在这里插入图片描述][a83c1bdd1ecf4763b7b88040a3773a7c.png] #### 6.3 空间复杂度 #### ##### 6.3.1 基本jieshao ##### 1)类似时间复杂度的讨论,一个算法的空间复杂度(space Complexity)定义为该算法所消耗的存储空间,它是问题规模n的函数 2)空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量,有的算法需要占用的临时工作单元数与解决问题的规模n有关,它随着n的增大而增大,当n较大时,将占用较多的存储单元,入如快速排序和归并排序算法就是属于这种情况 3)在做算法分析时在,主要讨论的是时间复杂度,从用户使用体验上看,更看重程序执行的速度,一些缓存产品(redis、memcache)和算法(基数排序)的本质就是用空间换时间。 #### 本次时间复杂度教程出自韩顺平的数据结构和算法教程 #### [数据结构和算法教程][Link 1] 哔哩哔哩详细教程 在 51-53p,视频共有三个,不到一个小时。二倍速半小时即可看完。 最后,认识一下,我是小白。努力成为一名合格的程序员。期待与你的下次相遇。 [551e5b9c48924e05b757a03932b1656f.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/4b756e66683f4df4a9e565a2a5bd7806.png [aae2f926017b4dbda4e81cdd6350128b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/456642461fab4502943028f464e4df8a.png [9bdf2506d6af45a3a169b655db31325d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/769b34ca489b4242a7d0b5fec4e66980.png [df2d6463c40546288fbe97d3ad64979d.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/de220208993d42cab81e07f27f30a69d.png [51ee0fda2b524bc58fb39d9f7f9c7d8b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/bc17674ab8fe493bafa0ffbcfe62e337.png [1c69b91223b04ac1a53c964dc3f9b0b0.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/c82eb5d895834c5d87f5f1e750b4fcc8.png [93c69d02f94545038c7df7b59c5f004b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/b90a93697a8948498f63045cce5a777c.png [902b65b2e8bd44fc9d3816c367dc8feb.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/6bff7b659ca34c648c6f8d155a1073b7.png [bfec1ef76e2a487f8addc43fbaccc00b.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/3df31c0c357744788317988e82ca6245.png [0a60f3a8f92943c48d13ad41a6d535e5.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/87b33788555b421fb0fbc8d321047a8c.png [e2200246b4284e6189379cf33d0907ed.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/aa88446e732b46db8da4d77a0f54b97b.png [6dbe0e878bce45c2beb6980450eaeda2.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/d2db09ae81204d6ab013f045098495ab.png [a83c1bdd1ecf4763b7b88040a3773a7c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/04/08/835bf7c36b0f47eba1c9cb5cf1d2aa6f.png [Link 1]: https://www.bilibili.com/video/BV1E4411H73v?p=53&spm_id_from=pageDriver&vd_source=027fde985896626031abccc06ce8b031
相关 搞懂时间复杂度、时间复杂度 文章目录 写在前面 1、数学中的log什么意思? 2、时间复杂度 2.1、用T(n)表示程序执行次数 末蓝、/ 2023年10月08日 12:48/ 0 赞/ 83 阅读
相关 时间复杂度_空间复杂度 时间复杂度\_空间复杂度 主要说明以下3点: 1.算法效率 2.时间复杂度 3.空间复杂度 一、算法效率 算法效率分析分为两种:第一种是时间效率,第二种 朱雀/ 2023年06月29日 15:59/ 0 赞/ 200 阅读
相关 时间复杂度 转载自:[https://blog.csdn.net/itachi85/article/details/54882603][https_blog.csdn.net_itach 约定不等于承诺〃/ 2022年12月26日 08:10/ 0 赞/ 271 阅读
相关 时间复杂度 常见的时间复杂度 <table> <thead> <tr> <th>复杂度名称</th> <th>具体表示</th> </tr> </ 叁歲伎倆/ 2022年12月04日 01:11/ 0 赞/ 239 阅读
相关 时间复杂度 几种排序算法的思想很容易掌握,就是对应的时间复杂度,究其原因就是对时间复杂度是什么,如何定义计算还不知道,那么时间复杂度是如何计算的呢?请看下文。 在说 £神魔★判官ぃ/ 2022年09月17日 12:26/ 0 赞/ 225 阅读
相关 时间复杂度 ![在这里插入图片描述][watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAenl5MTMwOTg4_ た 入场券/ 2022年08月28日 13:55/ 0 赞/ 201 阅读
相关 时间复杂度 时间复杂度 1. 概念 用来表示一个算法的理论上的耗时时间 2. 时间频度 一个算法中,语句执行的次数,被称为时间频度T(n) 3.时间复杂度 存在 蔚落/ 2022年03月21日 09:31/ 0 赞/ 289 阅读
相关 时间复杂度?? O(1) < O(log n) < O(n) < O(nlog n)< O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) 时间复杂度 傷城~/ 2021年10月01日 04:02/ 0 赞/ 425 阅读
相关 时间复杂度 什么是时间复杂度 > 算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函 喜欢ヅ旅行/ 2021年06月10日 20:40/ 0 赞/ 528 阅读
还没有评论,来说两句吧...