算法的时间复杂度

算法的时间复杂度

分析一个算法的好坏,一般是分析其时间复杂度T(n)和空间复杂度S(n)。其中时间复杂度(Time complexity)是指算法执行时耗费时间的长度,空间复杂度(Space complexity)是指占用存储单元的长度。本文只讨论时间复杂度的情况。

执行时间(running time)是取决于input size的数量级(n=6 和n=10^6所耗费的时间当然是不同的)、input pattern (如果要求对输入的数列作降序排序,输入的是升序数列就是最坏的情况,输入升序数列就是最佳情况)、机器配置(自己的小笔记本和超级计算机)。所以要定义时间复杂度,其实是有一些“默认的规则”存在的:

  • 定义一个关于n的函数T(n) 例如T(n)=2n^2+6n+10
  • 只考虑最坏情况
  • computional model 是RAM(Random Access Machine)
    这里说的RAM是real-RAM也就是: 每个实数存储在一个存储单元内;给定一个内存地址,我们可以直接获取到这个数据而非从存储单元的第一个地址开始查找;假设原语操作(primitive operation)的执行时间为常数c。
    a. arithmetic opreations: +、-、 *、 /、 ^(1/2)
    b. assignment: =; x=y; y=5;
    c. comparisions: >、< 、==、x>y
    d. flow control: if、while

附上几页笔记

举例

小技巧

英文定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值