| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构之时间空间复杂度 -> 正文阅读 |
|
[数据结构与算法]数据结构之时间空间复杂度 |
基本概念
数据结构包含的基本概念整理如下图所示。 稀疏索引表示例: 倒排索引示例: 算法算法是指对特定问题求解步骤的一种描述。 时间复杂度时间复杂度:算法运行需要的时间,一般将算法基本运行的执行次数作为时间复杂度的度量标准。 示例1:
总共运行次数:1+1+(n+1)+n+n*(n+1)+n*n = 2n^2 +3n+3,当n足够大时,算法运行次数主要取决于高项,其余可忽略不计。**O(f(n)) = O(n2)**,用**O(n2)**表示示例1的时间复杂度。 示例2:
总共运行次数:1+2log2(n),时间复杂度记为O(log2(n))。计算机中logn默认就是以2为底的幂函数。 示例3:
该程序很难计算到底执行了多少次,因为执行次数依赖于x在数组中的位置。 最好情况:第一个元素就是x,则执行1次;最坏情况:最后一个元素是x,执行n次;平均情况:如果分布概率均等,则平均执行次数为(n+1)/2次。 有些算法可以分最好情况、最坏情况、平均情况来求解时间复杂度,我们一般要考虑到最坏情况,才有实际参考意义。 空间复杂度算法占用空间的大小,一般将算法的辅助空间作为衡量标准。 一个算法占用的空间:
示例1:
该算法使用了一个辅助空间,因此空间复杂度为O(1)。 示例2:
递归算法中,每一次递推需要一个栈空间来保存调用记录,因此空间复杂度需要计算递归栈的辅助空间。 该计算n的阶乘程序中,每次需要进栈压栈,到最后出栈。空间复杂度是O(n),时间复杂度是O(n)。 时间复杂度的优劣: **O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) ** 斐波那契问题了解下快速幂法:如何快速的求解A的B次方,可以参考这篇博文。 斐波那契数列:1,1,2,3,5,8,13,21,34,55…
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:37:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |