前言
本书运用的大量的图片示例,推荐没有了解过算法的小白去阅读,真的是对新手相当友好了,作为图灵系列丛书的一部,质量也是过硬的。唯一可惜的地方在于书中的代码实现是用的python2.7。
作为我系统学习算法看的第一本书籍,《算法图解》的内容对于我这正在经历严蔚敏老师《数据结构》洗礼的小白来说确实比较easy,不过书中还是有很多可取的地方。因为作者本身就是视觉型学习者,所以书中内容包含了大量的插图,而我在阅读《数据结构》大多数时候是感到枯燥无聊的,还好《算法图解》中的大量图片缓解了我对算法的恐惧心理。
作为一本算法入门书籍,书中介绍了一些常见的算法,并在前三章为完全零基础的小白通俗易懂的讲解了有关算法的知识,后续又介绍了一些应用广泛的算法和数据结构,例如贪婪算法、图算法和散列表等。下面我对书中内容进行一些总结
一、算法简介
算法的运行时间用大O表示法表示,它指出了算法有多快。
算法的速度指的并非时间,而是操作数的增速。
谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
算法运行时间并不以秒为单位,其运行时间是从其增速的角度来度量的。
常见的5种大O运行时间
O(log n) 也叫对数时间,这样的算法包括二分查找。
O(n) 也叫线性时间,这样的算法包括简单查找。
O(n*log n) 这样的算法包括快速排序。
O(n^2) 这样的算法包括选择排序。
O(n!) 这样的算法有著名的旅行商问题,不过一般算法要是达到这个运行时间,那可以说是非常糟糕的算法了(赶兴趣的同学可以去查查)。
二、选择排序
书中示例代码(python语言实现)
#编写用于找出数组中最小元素的函数
def findSmallest(arr):
smallest = arr[0] #存储最小的值
smallest_index = 0 #存储最小元素的索引
for i in range(1,