我是靠谱客的博主 无辜曲奇,最近开发中收集的这篇文章主要介绍算法表示法之大O表示法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

    • 前言
    • 介绍
    • 时间复杂度
      • 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表示法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部