算法的时间复杂度

时间复杂度

  1. 度量程序的执行时间的方法:
    1). 事后统计:通过使用计算机内部的计时功能。但是该方法有两个明显缺陷:一是程序需要提前运行,二是计算的时间不仅仅依赖于算法本身,还依赖于计算机的硬件,软件等环境。
    2). 事前估计:由算法策略,问题规模,程序的语言,编译程序产生的机器码质量,机器执行指令速度决定。

度量算法的时间执行效率不应该与计算机软硬件,程序执行时间相关,而应该依赖于问题的规模(通常用n来表示)。
一个算法由控制结构(顺序,分支和循环)和原操作(对数据的操作)构成的,算法时间由二者的综合效果来决定。为了便于比较对同一问题的不同算法,时间度量通常由最深层循环内的原操作的重复执行次数决定。
例子-最深层循环内的原操作:“val+1”。

```java
int n = 100;
int val = 0;
int t = 0;
for(int i=0; i<n; i++){
	t++;
	for(int j=0; j<=i;j++){
			val = val+1;
	}
}
```
  1. 时间复杂度定义: 若算法中的基本操作重复执行的次数为问题规模为n的某个函数f(n), 则算法的时间度量记作:T(n) = O(f(n)), 它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
    由于算法的执行时间还随着输入数据的不同而发生变化,所以时间复杂度通常讨论的是最坏情况下的时间复杂度

  2. 时间复杂度的值:
    O(1), O(logn), O(n), O(nlogn), O( n k   n^{k}\, nk), O( k n   k^{n}\, kn), O(n!)
    通常够忽略常数和只保留方根数最大的项:如果一个算法得基本操作得执行次数为3 n 2   n^{2}\, n2+2n+n, 通常会认为它得时间复杂度为O( n 2   n^{2}\, n2)。二分法的执行时间为log2n, 时间复杂度记为O(logn)。

来源:

  1. 数据结构(第二版;严蔚敏&吴伟民)
  2. https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/r81qpe/
  3. https://guguoyu.blog.csdn.net/article/details/80891462
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值