时间复杂度

来源:互联网 发布:python openwrt 模拟 编辑:程序博客网 时间:2024/06/08 17:40
                         让编程改变世界Change the world by program---小昝

当我们参加比赛,例如蓝桥杯、ACM…时,往往一个题目都会有内存限制,而且学好算法必须要明白算法的复杂程度,同时时间复杂度也是上研究生的一个必备知识点,所以我们有必要去研究一下算法的时间复杂度(时间复杂度、空间复杂度)
判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(次数最高项)的阶数。
判断一个算法好不好,我们不能通过少量的数据判断算法的好坏,不能以偏概全。
时间复杂度:看的是算法执行时间的增长率(看潜力,不看现在的状态)。
一般情况下,随着输入规模n的增大,T(n)增长最慢的算法为最优算法。
时间复杂度攻略:
*用常数1取代运行时间中的所有加法常数 注:1+1+…+1=1 O(1)
*在修改后的运行次数函数中,只保留最高阶项。
*如果最高阶项存在且不为1,则去除于这个项相乘的常数。
*得到的最后结果即是大O阶。

常见时间复杂度

常见时间复杂度

复杂度曲线图

这里写图片描述

复杂度曲线图

这里写图片描述

常见时间复杂度比较

这里写图片描述

最坏运行时间

最坏运行时间是一种保证。在应用中,这是一种最重要的需求,通常除非特别指定,我们提到的运行时间都是最坏情况的运行时间。

算法空间复杂度

空间换取时间,时间换取空间。
举个例子:这里写图片描述
到底哪一种方法好,其实还是要看具体情况。

总结

当直接要让我们求“复杂度”时,通常指的是时间复杂度。显然对时间复杂度的追求更是属于算法的潮流!

原创粉丝点击