文章目录

  • 常见的渐进时间复杂度
  • 顺序表插入操作平均情况
  • 顺序表删除操作平均情况
  • 顺序表按值操作平均情况
  • 卡特兰数
  • 对称矩阵压缩存储的首地址公式
    • 按行优先 矩阵下标从1
    • 按行优先 矩阵下标从0
  • 下三角矩阵压缩存储的首地址公式
    • 按行优先 矩阵下标从1
    • 按行优先 矩阵下标从0
  • 上三角矩阵压缩存储的首地址公式
    • 按行优先 矩阵下标从1
    • 按行优先 矩阵下标从0
    • 节点数

常见的渐进时间复杂度

O(1) < O(log⁡2\log_2log2​n) < O(n) < O(nlog⁡2\log_2log2​n) < O(n2n^2n2) < O(n3n^3n3) < O(2n2^n2n) < O(n!) < O(nnn^nnn)

顺序表插入操作平均情况

  • 因插入的位置有n + 1个,故插入一个元素的概率pip_ipi​为 1n+1\frac{1}{n + 1}n+11​
  • 移动的元素范围从第i个到第n个,总共要移动(n - i + 1)个元素,将其向后移动一个单位空间

∑i=1n+1pi(n−i+1)\displaystyle\sum_{i=1}^{n+1}p_i(n-i+1)i=1∑n+1​pi​(n−i+1) = ∑i=1n+11n+1(n−i+1)\displaystyle\sum_{i=1}^{n+1}\frac{1}{n + 1}(n-i+1)i=1∑n+1​n+11​(n−i+1) = 1n+1∑i=1n+1(n−i+1)\frac{1}{n + 1}\displaystyle\sum_{i=1}^{n+1}(n-i+1)n+11​i=1∑n+1​(n−i+1) = 1n+1n(n+1)2\frac{1}{n + 1}\frac{n(n+1)}{2}n+11​2n(n+1)​ = n2\frac{n}{2}2n​

顺序表删除操作平均情况

  • 因总元素的个数位n,故删除一个元素的概率pip_ipi​为 1n\frac{1}{n}n1​
  • 移动的元素范围从第i + 1个到第n个(不包括要被删除的第i个元素),总共要移动(n - (i + 1)+ 1)个元素,将其向前移动一个单位空间

∑i=1npi(n−i)\displaystyle\sum_{i=1}^{n}p_i(n-i)i=1∑n​pi​(n−i) = ∑i=1n1n(n−i)\displaystyle\sum_{i=1}^{n}\frac{1}{n}(n-i)i=1∑n​n1​(n−i) = 1n∑i=1n(n−i)\frac{1}{n}\displaystyle\sum_{i=1}^{n}(n-i)n1​i=1∑n​(n−i) = 1nn(n−1)2\frac{1}{n}\frac{n(n-1)}{2}n1​2n(n−1)​ = n−12\frac{n - 1}{2}2n−1​

顺序表按值操作平均情况

  • 最好时,一次就查询完毕;最坏时,n次才查询完毕
  • 查询次数为 1, 2, 3,⋯\cdots⋯, n-1,n;形成等差数列

∑i=1npi×i\displaystyle\sum_{i=1}^{n}p_i \times ii=1∑n​pi​×i = ∑i=1n1n×i\displaystyle\sum_{i=1}^{n}\frac{1}{n} \times ii=1∑n​n1​×i = 1nn(n+1)2\frac{1}{n}\frac{n(n+1)}{2}n1​2n(n+1)​ = n+12\frac{n+1}{2}2n+1​

卡特兰数

  • 通过入栈的不同元素总个数计算不同出栈序列的情况的个数

1n+1C2nn\frac{1}{n+1} C_{2n}^nn+11​C2nn​
-如输入三个不同元素依次进栈,可以得到5个不同出栈序列的情况

对称矩阵压缩存储的首地址公式

按行优先 矩阵下标从1

  • n阶矩阵,其下标范围为(1, n)
  • 当 i ≥\ge≥ j 时 即在下三角区和主对角线上
  • 第一行有1个,第二行有两个,第 i-1 行有 i-1 个
  • 从1行到第i-1行个共有(i - 1 - 1 + 1)= (i - 1)行
  • 等差公式:首项加末项乘项数除以2
  • 因ai,ja_i,_jai​,j​在第i行上第j个,首地址需要减一,故 (j - 1 + 1 - 1) = j - 1
  • L为单位空间大小,下同
  • k表示为存放在一维数组第k个,下同

address(ai,ja_i,_jai​,j​) = address(a0,0a_0,_0a0​,0​) + k ×\times× L

k = (i−1)(1+i−1)2+(j−1)\frac{(i-1)(1+i-1)}{2} + (j - 1)2(i−1)(1+i−1)​+(j−1) = i(i−1)2+(j−1)\frac{i(i-1)}{2} + (j - 1)2i(i−1)​+(j−1)

  • 应对称关系, 当 i < j 时,将i与j对调就行

k = j(j−1)2+(i−1)\frac{j(j-1)}{2} + (i - 1)2j(j−1)​+(i−1)

按行优先 矩阵下标从0

  • n阶矩阵,其下标范围为(0, n-1)
  • 当 i ≥\ge≥ j 时 即在下三角区和主对角线上
  • 第零行有1个,第一行有两个,第 i-1行有 i 个
  • 从第0行到第i-1行个共有(i - 1 - 0 + 1)= i 行
  • 因ai,ja_i,_jai​,j​在第i行上第j个,首地址需要减一,故 (j - 0 + 1 - 1) = j

address(ai,ja_i,_jai​,j​) = address(a0,0a_0,_0a0​,0​) + k ×\times× L

k = i(1+i)2+j\frac{i(1+i)}{2} + j2i(1+i)​+j = i(i+1)2+j\frac{i(i+1)}{2} + j2i(i+1)​+j

  • 应对称关系, 当 i < j 时,将i与j对调就行

k = j(j+1)2+i\frac{j(j+1)}{2} + i2j(j+1)​+i

下三角矩阵压缩存储的首地址公式

按行优先 矩阵下标从1

address(ai,ja_i,_jai​,j​) = address(a0,0a_0,_0a0​,0​) + k ×\times× L

  • 当 i ≥\ge≥ j 时 即在下三角区和主对角线上

k = i(i−1)2+(j−1)\frac{i(i-1)}{2} + (j - 1)2i(i−1)​+(j−1)

  • 当 i < j 时 为同一常数,故在一维数组最后开辟一个单位空间,来存储常数

k = n(n+1)2\frac{n(n+1)}{2}2n(n+1)​

按行优先 矩阵下标从0

address(ai,ja_i,_jai​,j​) = address(a0,0a_0,_0a0​,0​) + k ×\times× L

  • 当 i ≥\ge≥ j 时 即在下三角区和主对角线上

k = i(i+1)2+j\frac{i(i+1)}{2} + j2i(i+1)​+j

  • 当 i < j 时 为同一常数,故在一维数组最后开辟一个单位空间,来存储常数

k = n(n+1)2\frac{n(n+1)}{2}2n(n+1)​

上三角矩阵压缩存储的首地址公式

按行优先 矩阵下标从1

  • n阶矩阵,其下标范围为(1, n)
  • 第一行n个元素,第二行n-1个元素,第 i-1 行n-(i-1)+1个元素
  • 从第1行到第i-1行,共i-1行

address(ai,ja_i,_jai​,j​) = address(a0,0a_0,_0a0​,0​) + k ×\times× L

  • 当 i ≤\le≤ j 时 即在下三角区和主对角线上

k = (i−1)(2n−i+2)2+(j−i)\frac{(i-1)(2n - i + 2)}{2} + (j - i)2(i−1)(2n−i+2)​+(j−i)

  • 当 i > j 时 为同一常数,故在一维数组最后开辟一个单位空间,来存储常数

k = n(n+1)2\frac{n(n+1)}{2}2n(n+1)​

按行优先 矩阵下标从0

  • n阶矩阵,其下标范围为(0, n-1)
  • 第零行n个元素,第一行n-1个元素,第 i-1 行(n-1)-(i-1)+1个元素
  • 从第0行到第i-1行,共ii行
  • 当 i ≤\le≤ j 时 即在下三角区和主对角线上

k = i(2n−i+1)2+(j−i)\frac{i(2n-i+1)}{2} + (j - i)2i(2n−i+1)​+(j−i)

  • 当 i > j 时 为同一常数,故在一维数组最后开辟一个单位空间,来存储常数

k = n(n+1)2\frac{n(n+1)}{2}2n(n+1)​

节点数

  1. 树的节点数 等于 树所有度的节点之和 等于 所有节点的度数之和加一 等于 分支数加一
  2. 度为m的树第 i 层最多 mi−1m^{i - 1}mi−1个节点
  3. 高度为h的m叉树至多有mh−1m−1\frac{m^h - 1}{m - 1}m−1mh−1​个节点

∑i=1nmi−1\displaystyle\sum_{i=1}^{n} m^{i - 1}i=1∑n​mi−1 = m0m^0m0 + m1m^1m1 + m2m^2m2 + ⋯\cdots⋯ + mn−1m^{n-1}mn−1 = m0(1−mh)1−m\frac{m^0(1 - m^h) }{1 - m}1−mm0(1−mh)​ = mh−1m−1\frac{m^h - 1}{m - 1}m−1mh−1​

  1. 具有n个节点的m叉树的最小高度为[log⁡m(n(m−1))+1\log_m{(n(m-1)) + 1}logm​(n(m−1))+1] ,[]为取整符号

mh−1m−1\frac{m^h - 1}{m - 1}m−1mh−1​ = n 求h
mhm^hmh = n(m-1) + 1 => log⁡mmh\log_m^{m^h}logmmh​ = log⁡m(n(m−1)+1)\log_m{(n(m-1) +1)}logm​(n(m−1)+1)

数据结构中的数学公式相关推荐

  1. 数据结构中等号表示什么_通过分析2016年最重要的252个中等故事我学到了什么...

    数据结构中等号表示什么 Medium may be struggling to find a sustainable business model, but they have years worth ...

  2. 图解:数据结构中的6种「树」,柠檬问你心中有数吗?

    数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习数据结构时候,会遇到各种各样的基础数据结构,比如堆栈.队列.数组.链表.树...这些基本的数据结构类 ...

  3. 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)

    原文:http://blog.csdn.net/sup_heaven/article/details/39313731 数据结构中常见的树(BST二叉搜索树.AVL平衡二叉树.RBT红黑树.B-树.B ...

  4. gsoap中的数据结构中不允许有野指针

    2019独角兽企业重金招聘Python工程师标准>>> gsoap中的数据结构中不允许有野指针,比如char *p,没有给它赋值,就必须要给其赋值为NULL. 转载于:https:/ ...

  5. 数据结构——数据结构中的数据表示

    1,本文介绍数据的概念,以便讨论数据结构究竟是什么: 2,程序设计的挑战: 1,利用计算机解决现实生活中的问题: 1,计算机顾名思义是其诞生的时候仅仅是给科学家使用,科学家用计算机进行计算: 2,这是 ...

  6. c语言折半查找递归程序,C语言数据结构中二分查找递归非递归实现并分析

    C语言数据结构中二分查找递归非递归实现并分析 前言: 二分查找在有序数列的查找过程中算法复杂度低,并且效率很高.因此较为受我们追捧.其实二分查找算法,是一个很经典的算法.但是呢,又容易写错.因为总是考 ...

  7. [数据结构]数据结构中各种树

    阅读目录 1. 二叉树 2. 二叉查找树 3. 平衡二叉树 3.1 平衡查找树之AVL树 3.2 平衡二叉树之红黑树 4. B树 5. B+树 6. B*树 7. Trie树 数据结构中有很多树的结构 ...

  8. 初始化栈的代码_数据结构中的栈,你知道多少?

    由于栈比较简单,也很容易理解,学过的人都知道一句话就可以描述栈的特性:后进先出.所以这篇文章主要是写如何使用代码来描述栈,当然也是让大家很容易理解的语言.还是先给出这篇文章的大致脉络. 首先,对栈有一 ...

  9. 数据结构中的各种排序---总结篇

    转载:http://blog.csdn.net/wzyhb123456789/article/details/5974790 一个月没有写文章,原因是一直在忙碌着,但是其实是有收获的,下面就是我这前半 ...

  10. 堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)

    堆的特性: 必须是完全二叉树 用数组实现 任一结点的值是其子树所有结点的最大值或最小值 最大值时,称为"最大堆",也称大根堆: 在完全二叉树中,任何一个子树的最大值都在这个子树的根 ...

最新文章

  1. 什么时候使用临时表?
  2. 《AI系统周刊》第1期:社群招新,打通智能计算软硬件“任督二脉”
  3. python any()和all()
  4. CSS核心技术详解-核心概念
  5. java猜数游戏图形界面_Java做一个猜数的小游戏
  6. python提取文本中的字符串到新的txt_Python实现jieba对文本分词并写入新的文本文件,然后提取出文本中的关键词...
  7. mysql5.6.msi 百度云_如何安装Mysql数据库类型msi(5.6)
  8. HTTP安全随想,第一指导原则:不要相信任何用户的输入[]
  9. Android MVP和Dagger2
  10. 面试常被问的65个问题及回答技巧(请收藏)
  11. 步步为营 .NET三层架构解析 三、SQLHelper设计
  12. 前端静态页面html珠宝首饰电商平台网站购物商城系统.rar含源码
  13. ps 条件动作添加 图层锁定和解锁
  14. windows, macos 和 linux 各平台的哈希校验方法汇总
  15. 剪辑视频怎么加音效 视频音效常用都有哪些类型
  16. edge浏览器整理收藏夹 找不到收藏夹
  17. JavaWeb - 软件开发的流程,综合案例
  18. 物联网的概念、分层及关键技术
  19. 在线教育项目02_前端知识(es6、vue)
  20. 2013編程之美 集会 三分

热门文章

  1. linux格式化u盘保护,linux系统怎么避免u盘被写保护
  2. Springboot微信公众号开发入门流程(校验签名、access_token获取、生成带参二维码、发送文字、图文消息、被动回复消息、图文消息静默跳转)
  3. 简单的有监督学习实例——简单线性回归
  4. word中有软回车(每行后面有向下的箭头)的解决方法
  5. google地图通过经纬度查询位置
  6. 关于为了吃瓜通宵7天写了一个网站却没钱买域名这件小事
  7. 4.3检测CSRF漏洞
  8. 2017暑期实习招聘-产品经理-微软WDGAE(1)-2轮面试
  9. 在华为能拿多少工资,揭秘一个真实的华为!
  10. java基础之枚举类