关于Big-O表示法

知道算法的时间复杂度和空间复杂度能让你针对具体度的业务选择正确的算法。

一、时间复杂度

1、概述

一般情况下,算法的基本操作重复执行的次数是模块n的某一函数f(n),因此,算法的时间复杂度记做 T(n) = O(f(n))。 随着模块n的增大,算法执行的时间增长率f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。

int num = 0; // 第一次执行
int n = 7;

for (int i = 0; i < n; i ++) { // 执行了n次
    num += 1;
}

这个算法执行了 1 + n 次,如果n无限大,我们可以把前边的1忽略,也就是说这个算法执行了n次。时间复杂度常用大O符号表示,这个算法的时间复杂度就是O(n),我们称之为大O记法。 

而判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高项)的阶数。如:算法A需要运行2n^2+3n+1次,其中的3n+1已经没法和2n^2的结果相比较,最终几乎可以忽略不计。

在Python中,可以使用大O表示法(Big O notation)来描述算法时间复杂度空间复杂度。大O表示法用于衡量算法的效率和性能,指的是随着输入规模增加,算法的运行时间或空间占用的增长情况。 大O表示法的常见表示方式有: 1. O(1):常数时间复杂度。无论输入的规模如何增加,算法的执行时间都不会有明显变化。例如,访问数组中的特定元素。 2. O(log n):对数时间复杂度。随着输入规模的增加,算法的执行时间呈对数级增长。例如,二分查找算法。 3. O(n):线性时间复杂度算法的执行时间与输入规模成正比。例如,遍历一个数组来查找特定元素。 4. O(n log n):线性对数时间复杂度。随着输入规模的增加,算法的执行时间略低于线性增长。例如,归并排序和快速排序算法。 5. O(n^2):平方时间复杂度。随着输入规模的增加,算法的执行时间呈平方级增长。例如,嵌套循环的排序算法。 通过使用大O表示法,我们可以对算法进行分类和比较,以便选择最合适的算法来解决特定的问题。在编写程序时,了解算法时间复杂度可以帮助我们优化程序的性能,并提高执行效率。 总之,大O表示法是一种用于描述算法效率和性能的标记法,包括常数时间复杂度O(1)、对数时间复杂度O(log n)、线性时间复杂度O(n)、线性对数时间复杂度O(n log n)和平方时间复杂度O(n^2)等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值