首页 > 编程语言 >《算法图解》的读书体会

《算法图解》的读书体会

时间:2023-09-10 09:24:05浏览次数:41  
标签:体会 排序 本章 介绍 问题 算法 数据结构 图解

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

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

1. 算法简介

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

2. 选择排序

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

3. 递归

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

4. 快速排序

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

5. 散列表

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

6. 广度优先搜索

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

7. 迪杰斯特拉算法

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

8. 贪心算法

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

9. 动态规划

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

10. K最近邻算法

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

11. 树和其他数据结构

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

 

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

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

标签:体会,排序,本章,介绍,问题,算法,数据结构,图解
From: https://www.cnblogs.com/jejas/p/17690743.html

相关文章

  • 文心一言 VS 讯飞星火 VS chatgpt (89)-- 算法导论8.3 2题
    二、用go语言,下面的排序算法中哪些是稳定的:插入排序、归并排序、堆排序和快速排序?给出一个能使任何排序算法都稳定的方法。你所给出的方法带来的额外时间和空间开销是多少?文心一言:在Go语言中,以下排序算法是稳定的:插入排序归并排序而以下的排序算法是不稳定的:堆排序快速排......
  • 文心一言 VS 讯飞星火 VS chatgpt (89)-- 算法导论8.3 2题
    二、用go语言,下面的排序算法中哪些是稳定的:插入排序、归并排序、堆排序和快速排序?给出一个能使任何排序算法都稳定的方法。你所给出的方法带来的额外时间和空间开销是多少?文心一言:在Go语言中,以下排序算法是稳定的:插入排序归并排序而以下的排序算法是不稳定的:堆排序快速排序要使任......
  • C#希尔排序算法
    前言希尔排序简单的来说就是一种改进的插入排序算法,它通过将待排序的元素分成若干个子序列,然后对每个子序列进行插入排序,最终逐步缩小子序列的间隔,直到整个序列变得有序。希尔排序的主要思想是通过插入排序的优势,减小逆序对的距离,从而提高排序效率。希尔排序实现原理首先要确......
  • 解析排序算法:十大排序方法的工作原理与性能比较
    当我们面临对数据进行排序的任务时,计算机科学家们开发了多种排序算法来满足不同的需求。这些排序算法各具特点,适用于不同规模和类型的数据集。在本文中,我们将介绍十大常见的排序算法,并讨论它们的工作原理、时间复杂度以及适用场景。1.冒泡排序(BubbleSort)冒泡排序是最简单的排序算......
  • C#结合OpenCVSharp4使用直方图算法比较图片相似度
    C#结合OpenCVSharp4使用直方图算法比较图片相似度直方图有灰度直方图、颜色直方图,如果是灰度图像,那么就用灰度直方图,这里使用颜色直方图来计算两个图片的相似度。这里只记录如何使用,至于算法原理,问就是不会。直方图算法效率高,但精度不够,适合快速比较,例如以图搜图1.下载O......
  • 跳跃表算法
    跳跃表(简称跳表)由美国计算机科学家WilliamPugh发明于1989年。他在论文《Skiplists:aprobabilisticalternativetobalancedtrees》中详细介绍了跳表的数据结构和插入删除等操作。图形化探究跳表,先回顾链表。链表的优势就是更高效的插入、删除。痛点就是查询很慢很慢!每次查......
  • 机器学习算法原理实现——线性判别分析LDA
    介绍线性判别分析(LinearDiscriminantAnalysis,LDA)是一种有监督式的数据降维方法,是在机器学习和数据挖掘中一种广泛使用的经典算法。LDA的希望将带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点,按类别区分成一簇一簇的情况,并且相同类别的点,将会在投影后的......
  • 负载均衡之一致性哈希算法详解
    负载均衡之一致性哈希算法详解传统的哈希是直接把数据映射到对应的hash表上,但是当我们的数据量很大的时候,我们会采用多个hash节点来存储的方式来减少存储压力。但是这种hash算法下,如果我们的节点发生了增加或减少的时候,我们就需要将所有数据,重新建立映射关系,这会导致大量的数据......
  • 莫队算法学习笔记
    莫队普通莫队这个很基础。带修莫队就在普通莫队的基础上加上时间这一维度。[P1903国家集训队]数颜色/维护队列回滚莫队为什么要回滚?因为有些信息不好撤销,比如区间众数。和普通莫队相比较,就是对于每一个块,左端点放在块的右端点处,每次向左扩展,......
  • 代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表
    203.移除链表元素链表定义structListNode{intval;ListNode*next;ListNode():val(0),next(NULL){};ListNode(intx):val(x),next(NULL){};ListNode(intx,ListNode*next):val(x),next(next){};}1.在原链表上移除链表元素classSolut......