数据结构之算法的复杂度

加入码虫公益社区,解锁更多公益干货

详情咨询拳头学长()

22级南京大学软件学院考研交流群:

六月份是专业课打基础、巩基础的阶段。现阶段最重要的任务就是学习专业课中的重点、考点。为了帮助大家更好的掌握各科中的重点,码虫决定开放全程班基础课PPT中的内容和大家一起进步。

本章考点:算法的定义、时间复杂度的计算。

算法的定义:一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列。

算法的特性:1.输入—有0个或多个输入;2.输出,有一个或多个输出(处理结果);3.确定性,每步定义都是确切、无歧义的(相同的输入只能得到相同的输出);4.有穷性,算法应在执行有穷步后结束;5.有效性,每一条运算应足够基本。

什么是运行时间?运行时间可以看作是由程序步累加成的结果。代码中程序步指的是语法上或语义上有意义的一段指令序列,执行时间与实例特性无关。例如:

注释:程序步数为0声明语句:程序步数为0表达式:程序步数为1

循环:视其实条件而定(一般为n)

程序步计算下面给出一个例题,求数组所有元素之和为例:

算法对的复杂度分为时间复杂度和空间复杂度,我们需要掌握的是时间复杂度,它指的是程序运行从开始到结束所需要的时间,通常用大O符号表示。

在计算时间复杂度的时候要考虑到嵌套程序段和并列程序段的计算问题。

对于嵌套程序段:取所有嵌套程序段时间复杂度的乘积作为该段程序的时间复杂度。

对于并列程序段:取并列程序段复杂度最高值作为该段程序的时间复杂度。

下面给出常见时间复杂度之间的关系:

注意:非常数级别的复杂度(如O(c))一般要对常数进行化简,如O(kn+b)=O(n)。

下面给出一段示例代码,求代码的时间复杂度:

以上就是本章内容的全部啦,如对知识点有疑问,可以在评论区进行留言讨论哈!看到回复后学长将在第一时间内进行答疑。更多干货内容请


转载请注明:http://www.92nongye.com/ksfc/ksfc/204625800.html

  • 上一篇文章:
  •   
  • 下一篇文章: