《数据结构与算法图解》读书笔记
《数据结构与算法图解》是一本关于数据结构与算法的入门指南,由Jay Wengrow著作,袁志鹏翻译,人民邮电出版社出版。该书通俗易懂,适合基础薄弱的人士进行阅读,强烈推荐。
向着晨曦奔跑
这个作者很懒,什么都没留下…
展开
-
《数据结构与算法图解》笔记-第5章 用或不用大O来优化代码
第5章 用或不用大O来优化代码我们不能完全依赖于大O,因为有时候即使两种算法的大O记法完全一样,但实际上其中一个比另一个要快得多。5.1 选择排序选择排序的步骤如下。(1) 从左至右检查数组的每个格子,找出值最小的那个。(2) 知道哪个格子的值最小之后,将该格与本次检查的起点交换。第1次检查的起点是索引0,第2次是索引1,以此类推。(3) 重复第(1) (2)步,直至数组排好序。5.2 选择排序实战略5.3 选择排序的实现略5.4 选择排序的效率选择排序的步骤可分为两类:比较和交换,原创 2020-07-29 19:32:43 · 194 阅读 · 0 评论 -
《数据结构与算法图解》笔记-第4章 运用大O来给代码提速
第4章 运用大O来给代码提速4.1 冒泡排序排序算法是计算机科学中被广泛研究的一个课题。历时多年,它发展出了数十种算法,这些算法都着眼于一个问题:如何将一个无序的数字数组整理成升序?冒泡排序是一种很基本的排序算法,步骤如下。指向数组中的头两个元素,比较它们的大小。如果它们的顺序错了(即左边的值大于右边),就互换位置。如果顺序已经是正确的,那这一步就什么都不用做。将两个指针右移一格。重复第1步和第2步,直至指针到达数组末尾。重复第1至3步,直至从头到尾都无须再做交换,这时数组就排好序了。说原创 2020-07-28 14:04:01 · 174 阅读 · 0 评论 -
《数据结构与算法图解》笔记-第3章 大O记法
第3章 大O记法量化线性查找效率的方式应该是:对于具有N个元素的数组,线性查找最多需要N步。为了方便表达数据结构和算法的时间复杂度,计算机科学家从数学界借鉴了一种简洁又通用的方式,那就是大O记法。这种规范化语言使得我们可以轻松地指出一个算法的性能级别。3.1 大O:数步数为了统一描述,大O不关注算法所用的时间,只关注其所用的步数。数组不论多大,读取都只需1步。用大O记法来表示,就是:O(1)。O(1)意味着一种算法无论面对多大的数据量,其步数总是相同的。这1步在旧机器上也许要花20分钟,而用现代的硬原创 2020-07-27 12:40:46 · 324 阅读 · 0 评论 -
《数据结构与算法图解》笔记-第2章 算法为何重要
第2章 算法为何重要上一章我们明白了选择合适的数据结构将会显著地提升代码的性能。在本章,你将会发现,就算数据结构确定了,代码的速度也还会受另一重要因素影响,那就是算法。在计算机的世界里,算法是指某项操作的过程。一种操作可能会有不止一种做法。也就是说,一种操作会有多种算法的实现,不同的算法能使代码变快或者变慢——高负载时甚至慢到停止工作。2.1 有序数组有序数组跟数组几乎一样,唯一区别就是有序数组要求其值总是保持有序。即每次插入新值时,它会被插入到适当的位置,使整个数组的值仍然按顺序排列。往有序数组原创 2020-07-25 19:38:58 · 165 阅读 · 0 评论 -
《数据结构与算法图解》笔记-第1章 数据结构为何重要
第1章 数据结构为何重要数据是一个广义的术语,可以指代各种类型的信息,包括最基本的数字和字符串。数据结构则是指数据的组织形式。数据结构不只是用于组织数据,它还极大地影响着代码的运行速度。1.1 基础数据结构:数组数组是计算机科学中最基本的数据结构之一。array = [“apples”, “bananas”, “cucumbers”, “dates”, “elderberries”]这就是一个数组,它刚好包含5个字符串,每个代表从超市买的食物。我们会用一些名为索引的数字来标识每项数据在数组中的位原创 2020-07-25 14:21:47 · 184 阅读 · 0 评论