Day01:时间复杂度

刚开始,我想说点什麽

看过市面上许多解释演算法的资料,有些书搭配图片,有些影片浅显易懂,为了挑战自己以及将演算法了解透测,开始了这次的铁人赛。

开始的时候,想要推荐一本书给大家,是这本书引我进入演算法之门(笑)

**演算法图监:26种演算法 + 7种资料结构,人工智慧、数据分析、逻辑思考的原理和应用全图解
**

身为一个半路转职的的工程师,发现在软件的领域,彻底实现「活到老,学到老」的精神,以此为基础,开始这30天的训练吧!

演算法是什麽

演算法,可以简单说也可以很复杂的讲。简单来说,是一个解决问题,并且用来达到目的方法,换句话说,输入 + 演算法 = 输出。而衡量此种方法是否为最有效方式,就可以利用时间或空间复杂度来测量。

时间复杂度 Time complexity

此处的时间,指的不是程序执行时所计算的秒数,而是从程序执行的第一步到完成,中间的步数。换句话,就是输入内容到输出答案之间的时间。
在表示时间复杂度时,会使用Big O(念作order),下图是几种常见的表示方式

  1. O(1):阵列读取
  2. O(n):无序阵列的搜寻
  3. O(log n):二分搜寻
  4. O(n log n):合并排序,最快的比较排序
  5. O(n²):泡沫排序、插入排序
  6. O(2^n):费波那契数列

执行效率:

O(1) < O(log(n)) < O(n) < O(n*log(n)) < O(n^2) < O(n^3) < O(2^n) < O(n!)

#copy 时间复杂度为O(1),仅执行一次即可达成目的
x = ["Hello World"]
y = x.copy()
print(y)

Python官网也有贴心提供不同方法之间的时间复杂度,有兴趣延伸阅读的人可以参考一下。

https://wiki.python.org/moin/TimeComplexity


<<:  Day1 - 前言

>>:  第01天 - 写网页的工具准备

Day 7 jinja (2)

前言 今天要继续看 jinja 的使用,昨天的内容比较接近一般的变数存取、if、for 的使用,而今...

从 IT 技术面细说 Search Console 的 27 组数字 KPI (11) :网页体验

在 Search Console 的概述中,第一个项目是流量成效,第二个项目是涵盖范围的有效网页数,...

除了刷题之外的事 - System Architecture

除了刷题之外的事 刷题是练习解决问题的能力的一种方法,而这里的「问题」主要是指演算法问题。但在实务...

Day07:部门与工程团队间协作的技巧(上)

一、前言   所谓的团队合作,我想最重要的就是如何沟通与使用有效之协作工具!沟通属於较偏人性与软性之...

[深度学习回顾] How Deep Would You Learn?

前言 不知不觉,铁人赛的赛程已经来进行了一半,每天发文使得生活过得非常充实。也感谢这里的许多高手发表...