码迷,mamicode.com
首页 > 编程语言 > 详细

高效算法之时间复杂度介绍

时间:2019-09-13 01:23:48      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:数量级   color   重要   中秋   第一个   复杂   str   高效算法   不同   

  上一篇博客已经给大家介绍了一些算法题,明天刚好是中秋了,这里祝大家中秋快乐。刚好赶上数学建模了,今天就先介绍与衡量算法水平的重要指标时间复杂度吧。在时间充裕情况下会更新5+2。之后还会介绍空间复杂度以及python内置函数的时间复杂度。

 

1.简介

先看一下什么是时间复杂度:

  衡量代码的好坏,包括两个非常重要的指标:

  运行时间占用空间

  代码的绝对执行时间是无法估计的,但可以预估代码的基本执行次数。

2.程序中最常见的四种执行方式有

(1)T(n) = kn,执行次数是线性的。

  可以理解为有一个任务,完成全部要达到n,每k个时间完成任务的1/n,则完成全部任务所需要的时间为kn个时间。

(2)T(n) = klog(a)(N),执行次数是对数的。

  可以理解为有一个任务,完成全部要达到n,每k个时间完成任务的1/a,然后下一个时间完成剩下任务的1/a,依次循环,则完成全部任务所需要的时间为kloa(a)N个时间。

(3)T(n) = k,执行次数是常量的。

  可以理解为有一个任务,完成全部要达到n,则k个时间完成任务的n,也就是需要k个时间完成所有任务,这个是可以得到代码的绝对执行时间的,则完成全部任务所需要的时间为k个时间。

(4)T(n) = 0.5n^2 + 0.5n,执行次数是一个多项式。

  可以理解为有一个任务,完成全部要达到n,完成第一个1要1个时间,完成第二个1要2个时间,就是不断相加,这里简化了,则完成全部任务所需要的时间为0.5n^2 + 0.5n个时间。

(5)时间复杂度

但是上面的不同情况的由于算法不同无法比较,而且有时候根据n的取值比较结果也不同。这时候就有了渐进时间复杂度的概念:

若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。

记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度,也被称为大O表示法

(6)时间复杂度的规则

  如果运行时间是常数量级,用常数1表示;

  只保留时间函数中的最高阶项

  如果最高阶项存在,则省去最高阶项前面的系数

  就是当运行时间不是常数时,省去前面的k系数。

  一般常见的时间复杂度的比较为:O(1)< O(logn)< O(n)< O(n^2)

 

高效算法之时间复杂度介绍

标签:数量级   color   重要   中秋   第一个   复杂   str   高效算法   不同   

原文地址:https://www.cnblogs.com/ITXiaoAng/p/11515699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!