概述
目录
- 前言
- 介绍
- 时间复杂度
- O(1)
- O(n)
- O(log n)
- O(n²)
- O(n * log n)
- O(n!)
前言
我们在描述算法复杂度时,常用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),当数量较多时耗时将变得非常大
最后
以上就是无辜曲奇为你收集整理的算法表示法之大O表示法的全部内容,希望文章能够帮你解决算法表示法之大O表示法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复