【算法一】大 O 表示法

算法:是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令。算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。简单来说,算法就是把一个问题,拆解为计算机能够一步一步执行的步骤。

大 O 表示法:是算法的一种特殊的表示法。它可以告诉我们算法的快慢,比较的是操作数,指出了当数据量增多时算法运行时间的增速,增速越慢,代表算法越快。

在数据量发生变化时,算法的效率通常也会跟着发生变化。
大 O 表示法的结果只是一个概数。

常见的大 O 表示形式:

在这里插入图片描述

O(1)

O(1):常数时间,表示算法的速度和数量无关,不论数量是多少,算法的速度始终不变。

典型算法有:哈希算法,无论数据量有多大,都可以在一次计算后查询到元素(不考虑冲突的话)。

O(logn)

O(logn):对数时间。

典型算法有:二分查找,即数量每扩大两倍,查询次数仅仅需要加 1,数量越多,算法耗时增速越慢。

O(n)

O(n):线性时间,表示算法的速度随着数量的增加呈线性增长。

典型算法有:简单查找,即在 n 个数中轮询查找目标元素所在的位置,当 n 的数量加 1 时算法查找的次数也加 1。

O(nlogn)

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

O(n²)

典型算法有:选择排序、冒泡排序,是速度较慢的排序法。

O(n!):

即当数量为 n 时,查询算法耗时为 m 时,当数量加 1,查询算法将耗时 m*(n+1),当数量较多时耗时将变得非常大。

推导大 O 表示法的方法:

推导大 O 表示法的方法:

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

例如:如果一个算法的时间复杂度计算出来是 2n² + 3n + 4,那么根据方法 1 得到 2n² + 3n + 1,根据方法 2 得到 2n²,根据方法 3 最终得到 ,则使用大 O 表示法为 O(n²)。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值