《算法图解》的读书体会

最近工作有点内耗严重,经常头痛,静下心来读一本书架里的书,好久没有练算法了,程序员算法还是不能丢,在这里分享读书体会。有时候看一本书并不一定是抱着学习的心思去读,那样太累,学习太枯燥了,抱着玩的心态去读,更能让我读下去。如果遇到问题,绕开它,我们不一定要解决问题,逃避问题也是处理问题的一种方式。

下面是关于这本书的章节介绍。

1. 算法简介

在本章中,我们探讨了算法对性能提升的关键作用,通过二分法的案例阐述了如何根据输入特征选择合适的算法以提高性能。我们还引入了算法性能度量的表示方法,大O表示法。

2. 选择排序

本章深入研究了计算机中的基本数据结构,包括数组和链表,并比较了它们在不同场景下的优劣势。

3. 递归

递归的基础知识在这一章中得到了介绍,包括基线条件和递归条件,同时我们也讨论了先进后出的数据结构——栈。

4. 快速排序

通过介绍分治法,我们学习了如何将大问题分解成小问题,通过解决小问题最终解决大问题。本章还对比了合并排序和快速排序,解释了为何在大多数情况下快速排序更加高效。

5. 散列表

数组和链表各自有优点和缺点,而散列表则是综合了它们的优点的数据结构。在本章中,我们讨论了如何设计合理的散列表,使其能够快速进行存取和删除操作。

6. 广度优先搜索

这一章介绍了图的数据结构,并通过解决“查找最短路径”的问题,演示了如何使用广度优先搜索算法。在应用广度优先算法解决问题时,队列是一个有效的数据结构用于维护待处理元素集合。

7. 迪杰斯特拉算法

延续了“查找最短路径”的问题,本章介绍了迪杰斯特拉算法,该算法能够解决“有向无环正权图”的最短路径问题。

8. 贪心算法

贪心算法是一种通过寻找局部最优解来获得整个问题最优解的方法。然而,需要注意的是,结果并不总是唯一的。

9. 动态规划

动态规划通过先解决子问题,逐步解决大问题。我们讨论了经典的背包问题,并强调在解决子问题时只有两个选项(拿或不拿),与贪心算法不同。

10. K最近邻算法

在本章中,我们介绍了K最近邻算法,并讨论了如何选择适当的指标来创建推荐系统。

11. 树和其他数据结构

最后一章涵盖了树这种重要的数据结构,以及大数据处理系统的理念。我们还简要介绍了布隆过滤器、SHA算法等相关内容。

 

这本书以简单易懂的方式介绍了算法和数据结构,适合新手和那些已经疏远算法知识的同学。不仅可以在短时间内阅读完毕,而且每次翻阅都能够获得新的收获。在面对难题时,从简单的问题入手,保持乐观心态,让自己开心,是学习算法的重要心态。重要的是不要内耗,而是积极寻求解决问题的方法,因为算法世界中的每一个问题都有解决方案。

写完这篇blog,明天还要继续上班,可能还要继续内耗,生活还要继续,等到哪天熬不住了 ,就跑路。正如文章开头说的那样,面对问题不一定要解决他,也可以逃避他。

posted on 2023-09-10 09:05  jejas  阅读(52)  评论(0编辑  收藏  举报