试题详情
- 简答题什么是算法的渐近时间复杂度?如何分析一个算法的渐近时间复杂度?
- 算法的渐近时间复杂度是对算法的时间效率的度量。也就是对一个算法执行所需要的时间进行分析。一个算法执行所需要的具体时间与所使用的计算机系统的软、硬件性能及问题的规模等因素有关。为了比较算法本身的时间性能,应该采用能够反映算法本身的时间性能的度量。实际上,通常算法运行所需要的时间T是问题规模n的函数,可记为T(n)。所谓算法的渐近时间复杂度,是当问题规模充分大时,算法运行时间的增长趋势的度量。因为增长率的上限对算法的比较更具意义,所以经常分析的是算法运行时间的增长率的上限,这就是算法的时间复杂度的大O表示,也常简称为算法的时间复杂度。
为了分析一个算法的时间复杂度,一般情况下需要考察算法中基本语句的执行次数,找出其与问题规模n的函数关系f(n),从而得到算法的渐近时间复杂度。所谓基本语句是执行次数与算法的执行次数成正比的语句,它是算法中的关键操作。算法的基本语句大多包含在循环和递归结构中,对于单循环结构,循环体中的简单语句就是基本语句,其执行次数的大O表示就是该算法段的渐近时间复杂度;对于并列的循环结构,要先分析各个循环结构的渐近时间复杂度,然后利用大O表示法的加法规则求出算法的时间复杂度;对于多层嵌套的循环结构,最内层循环中的简单语句就是算法的基本语句,要自外向内逐层分析各层循环的渐近时间复杂度,再利用大O表示法的乘法规则来求出算法的渐近时间复杂度。对于递归结构,则可以根据递归过程递推出基本语句的执行次数,进而得到它的大O表示。总之,只要分析求出算法中关键操作的执行次数与问题规模的函数关系,也就得到了该次数的大O表示,从而也就求出了算法的渐近时间复杂度。 关注下方微信公众号,在线模考后查看
热门试题
- 双向循环链表的结点与单链表的结点结构相同
- 将如图所示的树转换为二叉树。
- 当采用分块查找时,数据的组织方式为()
- 向一个有127个元素的顺序表中插入一个新
- 完全二叉树就是满二叉树。
- 下列是C语言中〝abcd321ABCD〞
- 讨论树、森林和二叉树的关系,目的是为了(
- 数据结构里,结构体数组,即定义数组的每个
- 在计算递归函数时,如不用递归过程,应借助
- 用邻接矩阵法存储一个图时,在不考虑压缩存
- 在具有n个结点的二叉树的二叉链表表示中,
- 数据结构里,参数为intp时,其传递方式
- 存在这样的二叉树,对它采用任何次序的遍历
- 仅允许在表的同一端插入和删除运算的线性表
- 将数组称为随机存取结构是因为()
- 广义表
- 线性表的顺序存储优于链式存储。
- 对于一个具有n个顶点的图,若采用邻接矩阵
- 在单链表中,若要在指针P所指结点后插入指
- 对于一个图G,若边集合E(G)为有向边的