前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《算法图解》NOTE 1-算法的渐近表示法以及二分法1 .渐近表示法2.二分法

《算法图解》NOTE 1-算法的渐近表示法以及二分法1 .渐近表示法2.二分法

作者头像
billyang916
发布2018-07-06 10:48:55
6280
发布2018-07-06 10:48:55
举报
文章被收录于专栏:python读书笔记python读书笔记

这是《算法图解》的第一篇读书笔记,内容关于表示算法复杂度的渐近表示法以及一个简单但高效的算法:二分法。

1 .渐近表示法

1.1定义

算法的运行需要时间,这就需要衡量算法运行时间即时间复杂度的方式。这个衡量方式就被成为渐近表示法(大O表示法)。 渐近表示法用于描述算法在最糟糕情况下的运行时间,同时也表示了算法运行时间随问题规模扩大而增长的幅度。

1.2如何使用渐近表示法确定时间复杂度

一般而言,算法复杂度可用一个函数进行表示。之后,仅保留函数中增长幅度最大的一项,而这一项就可用于衡量该算法的时间复杂度。

1.3时间复杂度的优先级

以下为常见的渐近表示方式及复杂度的优先级。其中,时间复杂度由上往下逐渐增加。

θ(1):常数级 θ(log(n)):对数级 θ(n):线性级 θ(nlog(n)):对数线性级 θ(n^2):平方级 θ(n^3):立方级 O(n^k):多项式级 Ω(k^n):指数级 θ(n!):阶乘级

2.二分法

2.1定义

二分法指的是在求解问题的过程中不断地折半缩减问题规模,最终在有限时间(log2 n)内求出问题答案的算法。

2.2实例

使用二分法的案例有很多,下面演示如何用二分法近似求出sqrt(2),精度在0.00000001

代码语言:javascript
复制
#二分法近似求出sqrt(2),精度在0.00000001
import math

def dichotomy(target,precision):
    square_target=int(target*target)
    low=0
    high=int(square_target**2)
    result=(low+high)/2
    while len(str(result))<10:
        if result**2<=square_target:
            low=result
        else:
            high=result
        result=(low+high)/2
    return result

print(dichotomy(math.sqrt(2),8))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 .渐近表示法
    • 1.1定义
      • 1.2如何使用渐近表示法确定时间复杂度
        • 1.3时间复杂度的优先级
        • 2.二分法
          • 2.1定义
            • 2.2实例
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档