时间复杂度&空间复杂度

一、算法效率

算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度;而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个算法的运行速度而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小,所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要在特别的关注一个算法的空间复杂度。

二、时间复杂度

时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间,,从理论上说,是不能算出来的。只有你把你的程序放在机器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。 

推导大0阶方法:


1、用常数1取代运行时间中的所有加法常数。
2、用常数1取代运行时间中的所有加法常数。 2、在修改后的运行次数函数中,只保留最高阶项。3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶
 

时间复杂度存在最好,平均,最坏情况:

最坏情况:任意输入规模的最大运行次数

平均情况:任意规模输入的期望运行次数

最好情况:任意输入规模的最小运行次数

冒泡排序时间复杂度:

最坏情况:n^2

最好情况:O(n)

二分查找时间复杂度:

log2n

递归的时间复杂度:

O(n)

递归的时间复杂度 = 递归的次数 * 每次递归执行的次数

斐波那契的时间复杂度:

 时间复杂度&空间复杂度_第1张图片

 有等比数列公式可计算出时间复杂度为:2^n

你可能感兴趣的:(java,开发语言,后端)