数据结构时间复杂度的复习与总结

一、概念

(1)频度:一个语句在算法中被重复执行的次数。

(2)问题规模的函数T(n):算法中所有语句的频度之和,

(3)O的含义是T(n)的数量级

(4)最坏的时间复杂度:最深层循环内的语句执行最大次数的情况下,算法的时间复杂度。

(5)最好的时间复杂度:最深层循环内的语句执行最少的次数情况下,算法的时间复杂度。

二、计算与规则

注意:本文中logn表示以2为底的n的对数。

关于时间复杂度的判别标准的解释:

由于一般程序由成百上千行代码组成,想要测试记录每一条语句所执行的次数不切合实际,时间复杂度这一标度的主要意义是从数量级上判断一个算法的运行效率。

在分析一个算法的时间复杂性时,有两个规则:

加法规则:

(1)T(n)=T1(n)+T2(n)= O(f(n))+O(g(n))=O(max(f(n),g(n)))

解释:下面两个图所示的代码,第一张图的算法规模为T1(n),第二张为的算法规模为T2(n),这个主函数和test函数是在用一个test.c文件中,问题规模是T(n),所以所求的时间复杂度就是从这两个问题规模的O()函数下表示的最大的数量级的函数。

(2)T(n)=T1(n)*T2(n)=O(f(n)*g(n))

解释:以上面第二张图所示的为例子,嵌套的for循环问题的规模就成了两个for循环执行次数的乘积。

(3)常见的时间复杂度的大小排序

O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)

三、王道题解(写一部分有代表性的)

  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值