算法表示法之大O表示法

前言

我们在描述算法复杂度时,常用o(1), o(n), o(logn), o(n logn)等表示对应算法的时间复杂度,是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。这种表示法称之为大O表示法

介绍

大O表示法是算法的一种特殊的表示法,指出了算法的速度有多快,它指出了算法运行时间的增速。需要注意的是大O表示法指的并非以秒为单位的速度

主要可以用来表示时间复杂度和空间复杂度

简单的说大O表示法仅仅只是定义当数量越多时算法运行时间的增速,增速越慢,即代表算法越快

时间复杂度

O(1)

O(1):是最低的时间复杂度,表示算法的速度和数量无关,不论数量是多少,算法的速度始终不变,也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变。 哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的话)

O(n)

O(n):也叫线性时间,表示算法的速度和数量增加呈现线性增长。
典型算法有:简单查找。
即在n个数中轮询查找a所处的位置,当n的数量+1时算法查找的次数也+1

代码案例

O(log n)

O(log n):也叫对数时间
典型算法有:二分查找法
即当数量每扩大两倍,查询次数仅仅需要+1次,是一种随着数量越多,算法耗时增速越慢的算法

代码案例

O(n²)

O(n²):
典型算法有:选择排序、冒泡排序,是一种速度较慢的排序法

代码案例

O(n * log n)

典型算法有:快速排序法,是一种速度较快的排序法

代码案例

O(n!)

是一种非常慢的算法
即当数量为n时,查询算法耗时为a时,当数量+1时查询算法将耗时a*(n+1),当数量较多时耗时将变得非常大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值