数据结构-时间复杂度计算示例

  • 1 数据结构-第一章-思维导图
  • 2 时间复杂度-简介
  • 3 时间复杂度-示例
    • 3.1 时间复杂度-常用技巧
    • 3.2 时间复杂度-示例
      • 3.2.1 对数阶-时间复杂度计算
      • 3.2.1 幂数阶-时间复杂度计算

1 数据结构-第一章-思维导图

  数据结构-第一章-思维导图缩略图展示如下图1所示:

图1

2 时间复杂度-简介

  在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。
  ------粘百度百科

3 时间复杂度-示例

3.1 时间复杂度-常用技巧

  时间复杂度的计算满足两个规则,分别是加法规则乘法规则
  1.加法规则多项相加,只保留最高阶的项,且系数变为1):T(n) = T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n) , g(n)))
  2.乘法规则多项相乘,都保留):T(n) = T1(n) × T2(n) = O(f(n)) × O(g(n)) = O(f(n) × g(n))

  时间复杂度的计算中,常见时间复杂度之间的关系。
  所消耗的时间从小到大排序为:O(1) < O(log2n) < O(n) < O(nlog2n) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn),口诀是“常对幂指阶”。

  1、顺序执行代码中语句只会影响常数项,可以忽略;
  2、循环语句中,只需挑循环中的一个基本操作分析它的执行次数和n的关系即可;
  3、如果有多层嵌套循环,只需关注最深层循环循环了几次。

3.2 时间复杂度-示例

  以下题目均来自王道考研系列-《数据结构考研复习指导》,均为计算时间复杂度。

3.2.1 对数阶-时间复杂度计算

  1、以下算法的时间复杂度为:

void fun(int n){int i = 1;while(i <= n)i = i * 2;
}

  1、【解析】基本运算为i = i * 2,该语句每次执行就是i乘2,设执行次数为t,则2t≤n,即t≤log2n,因此时间复杂度T(n)=O(log2n)。

  2、设n是描述问题规模的非负整数,下面的程序片段的时间复杂度是:

x = 2;
while(x < n/2)
x = 2 * x;

  2、【解析】基本运算为x = 2 * x,该语句每次执行就是x乘2,设执行次数为t,则2t+1≤n/2,即t≤log2n-2,根据加法规则,得到时间复杂度为T(n) = T1(n) + T2(n)= O(f(log2n)) + O(g(-2)) = O(max(f(log2n) , g(-2)))=O(log2n),即T(n) = O(log2n)。

  3、下列程序段的时间复杂度是:

count = 0;
for(k=1;k<=n;k*=2)for(j=1;j<=n;j++)count++;

  3、【解析】内层循环条件j≤n与外层循环的变量无关,各自独立,每执行一次j自增1,每次内层循环都都执行n次。外层循环条件k≤n,增量定义为k*=2,设循环次数为t,则t满足2t≤n,即t≤log2n。即内层循环的时间复杂度为O(n),外层循环的时间复杂度为O(log2n)。对于嵌套循环,根据乘法规则可知,该段程序的时间复杂度为:T(n) = T1(n) × T2(n) = O(n) × O(log2n) = O(nlog2n)。

3.2.1 幂数阶-时间复杂度计算

  1、有以下算法,其时间复杂度为:

void fun(int n){int i = 0;while(i*i*i<=n)i++;
}

  1、【解析】基本运算为i++,该语句每次执行就是i加1,设执行次数为t,有t×t×t≤n,即t3≤n,即t≤n1/3,因此时间复杂度T(n)=O(n1/3)。

  2、下列函数的时间复杂度是:

int func(int n){int i=0, sum=0;while(sum<n) sum += ++i;return i;
}

  2、【解析】基本运算为sum += ++i,它等价于++i;sum=sum+i,每执行一次i自增1,i=1时,sum=0+1;i=2时,sum=0+1+2;i=3时,sum=0+1+2+3,以此类推得出sum=0+1+2+3+…+i=(i+1)*i/2,设循环次数为t,则t满足(t+1)*t/2<n,因此时间复杂度为T(n)=O(n1/2)。

  3、设n是描述问题规模的非负整数,下列程序段的时间复杂度是:

x = 0;
while(n>=(x+1)*(x+1))
x = x + 1;

  3、【解析】基本运算为x = x + 1,该语句每次执行就是x加1,假设第k次循环终止,则第k次执行时,(x+1)2>n,x的初始值为0,第k次判断时x=k-1,即k2>n,k>n1/2,因此该程序段的时间复杂度为T(n)=O(n1/2)。

数据结构-时间复杂度计算示例相关推荐

  1. 数据结构--时间复杂度计算和空间复杂度计算篇

    时间复杂度和空间复杂度 一.时间复杂度 1.定义 2.三种时间复杂度 3.计算 *计算 #计算步骤 #常用技巧 #例题解析 二.空间复杂度 #定义 *计算 #计算步骤 #常用技巧 #例题解析 一.时间 ...

  2. [数据结构] 时间复杂度计算

    1. 算法的特性 输入(Input) 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件: 输出(Output) 一个算法有一个或多个输出,以反映对输入数据加工 ...

  3. 时间复杂度计算超全整理!!(数据结构和算法的第一步

    目录 1. 什么是数据结构? 1.1 数据结构和数据库的区别 1.1.1磁盘的特点: 2.什么是算法? 3.算法效率 3.1 如何衡量一个算法的好坏 4.时间复杂度 4.1 时间复杂度的概念 4.2 ...

  4. 【算法数据结构Java实现】递归的简单剖析及时间复杂度计算

    1.理解 对于递归函数的理解,我觉得是比较重要的,因为很多大神能把递归函数用的惟妙惟肖,不光是他们的编程功力高深,更主要是能理解这个算法.比较直白的理解是,如果一个事件的逻辑可以表示成,f(x)=nf ...

  5. 按一行一行的方法将一个文本文件复制到另一个文件中_大文件上的结构化数据计算示例...

    [摘要] 本文分析大文件计算的实现原理,如过滤.聚合计算.添加计算列.排序.分组聚合.topN 等,以及利用并行计算来提高计算速度,并用 esProc SPL 举例说明如何用简洁的脚本实现大文件计算. ...

  6. 二分查找与时间复杂度计算分析

    二分查找: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.   原理:假设表中元素 ...

  7. 高斯消元法的时间复杂度计算

    高斯消元法的时间复杂度计算 1.时间复杂度定义 2.几种常见复杂度执行效率的比较 3.时间复杂度的计算 4.高斯消元法的时间复杂度     算法的时间复杂度通常用来反映程序执行时间随输入规模增长而增长 ...

  8. Python 时间复杂度计算

    一.时间复杂度 1 常见的时间复杂度 #常量阶O(1) # 对数阶O(logn) # 线性对数阶O(nlogn) # 线性阶O(n) # 平方阶,立方阶....M次方阶O(n^2),O(n^3),O( ...

  9. Java基础-时间复杂度计算方式

    Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...

最新文章

  1. cmd怎么实现Java你好_java环境配置以及如何在cmd窗口运行java代码
  2. c# 使用线程方式实现消息订阅
  3. (五)Docker镜像管理1之镜像操作
  4. Python中多层List展平为一层
  5. java 导出csv_数据集标注方法、R数据的导出_R
  6. 一些基本算法的递归实现
  7. Activity Recognition行为识别
  8. BootStrap2学习日记16---选项卡内容
  9. C++实现tree树(附完整源码)
  10. Spring @Value 设置默认值
  11. [转]计算机专业方面的期刊介绍
  12. unity 删除服务器项目,在吗?有个支持批量构建项目的好东西推荐给你
  13. 开源社区团购微商城小程序,直播
  14. python 循环高级用法 [expression for x in X [if condition] for y in Y [if condition] ... for n in N [if con
  15. js中给html元素追加属性,用JS(JavaScript )给HTML元素增加id属性
  16. java多人聊天室与网络画板
  17. 基于深度摄像头的障碍物检测(realsense+opencv)
  18. 一年读完100本书(1/100)《微习惯》2021-01-18
  19. 无人驾驶出租车车队长沙惊艳亮相,BIE保驾护航
  20. 志强CPU E5 E7参数,CPU内核参数对比图

热门文章

  1. 小米4硬改教程_小米手环3系列更换表盘教程
  2. 2020年,区块链开发者还有哪些期待?
  3. 用猿大师播放器在网页上同时播放20路以上海康威视高分辨率(1920*1080)摄像头RTSP视频流?
  4. 校园失物招领小程序源码可作毕业设计
  5. Hive探秘--文件格式与压缩格式
  6. NoteExpress写论文导入引用
  7. 【code】最大乘积
  8. Xilinx 7系列FPGA 高速收发器GTX/GTH的一些基本概念
  9. 谷歌浏览器卸载后点击安装程序没反应
  10. LBS与AGPS的区别