`
frank1998819
  • 浏览: 758024 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

趣味算法图解,文科生都看懂了(转)

    博客分类:
  • Java
 
阅读更多

编者按 

IDEA 是由 SándorP. Fekete、Sebastian Morr 和 Sebastian Stiller 共同推出的图解算法系列。 它们最初是为 Sándor 在德国不伦瑞克工业大学开设的算法和数据结构讲座而设计的,作者希望它们能够有更广的用途,因此在网上发布了这个项目,希望能够帮助到教师、学生和有好奇心的人们。算法将会不断更新,可以访问页面了解更多信息:https://idea-instructions.com/。 

这些图片使用 Inkscape 绘制,可以使用任意一款向量图编辑软件来编辑它们。每个算法下面都有相应的图片下载地址。 

快速排序 

快速排序是一种“分而治之”的排序算法,通过随机选择“分区点”来避免出现最坏的情况。 

 

  • 随机选择“分区点”。
  • 按照“分区点”的高度划条线。
  • 高出“分局点”的元素需要向右移动。
  • 低于“分区点”的元素需要向左移动。
  • 移动元素。
  • 重复上述的步骤分别对位于“分区点”两边的元素进行排序

。 下载地址:https://idea-instructions.com/quick-sort/ 

Bogo 排序 

Bogo 排序也被称为“愚蠢的排序”,是一种非常简单但低效的排序算法,就是不断打乱元素的顺序,直到达到有序为止。 

 

  • 查看元素是否有序。
  • 元素无序,那么就打乱顺序。
  • 再次检查元素是否有序。
  • 如果有序,排序成功,否则继续重复上述步骤。

下载地址:https://idea-instructions.com/bogo-sort/ 

二分查找 

二分查找是一种快速从一个有序数组中找到某个元素位置的查找算法。这有点类似于猜数字游戏,通过不断问“目标数字是大于还是小于某个数”这样的问题,最终猜出目标数字。 

 

  • 限定元素区间。
  • 待查找元素在区间的某个位置吗?
  • 不在。
  • 那么看看待查找元素是不是在当前位置的左边或者右边。

下载地址:https://idea-instructions.com/binary-search/ 

归并排序 

归并排序也是一种“分而治之”的递归排序算法。 

 

  • 把元素分成两部分,对每一个部分采用递归的归并排序。
  • 比较已经排好序的元素。
  • 合并已经排好序的元素。
  • 排序完毕。

下载地址:https://idea-instructions.com/merge-sort/ 

平衡二叉树 

平衡二叉树是自平衡的二叉树变种,可以保证快速的查找、插入和删除操作。 

 


以图中的平衡二叉树为例: 

  • 左子节点比父节点小,而父节点比右子节点小。如果根节点左右子树的高度差超过 1,就变得不平衡。
  • 想知道树中是否包含了元素 11?11 比 10 大,那么就查找 10 的右子节点 12。11 比 12 小,所以就查找 12 的左子节点,12 的左子节点刚好是要查找的 11。同样的,树中是否包含了元素 8?8 比 10 小,那么就查找 10 的左子节点 6。8 比 6 大,那么就查找 6 的右子节点。6 的右子节点不存在,说明树中不存在元素 8。
  • 如何找到树中最小的元素?从根节点开始,一直顺着左子节点,找到最后一个叶子节点就是树中最小的元素。
  • 如何找到 10 的下一个元素?如果根节点刚好是 10,那么就从 10 的右子树中找到最小的那个元素。如果根节点不是 10,那么先找到 10,如果 10 没有右子节点,那么就一直往父节点找,直到找到比 10 大的元素为止。
  • 在树种加入 17 或删除 10,破坏了树的平衡,这个时候需要通过旋转恢复树的平衡。

下载地址:https://idea-instructions.com/avl-tree/ 

图遍历 

图遍历算法会遍历图中所有可达的顶点,可以通过辅助数据结构来实现各种遍历,比如使用无序集合实现随机遍历,使用堆栈实现深度优先遍历,使用队列实现广度优先遍历。 

 

  • 随机查找:选定一个顶点,把它放入一个无序集合中。从集合中取出一个顶点,访问该顶点,把该顶点的相邻顶点放入集合中,并把该顶点移出集合。重复这一过程,直到集合中的元素全部被遍历完毕。
  • 深度优先遍历:选定一个顶点压入栈中,把该顶点其中的一个相邻顶点也压入栈中。访问栈顶的顶点,如果该顶点没有其他相邻的顶点,就出栈。如果有其他相邻顶点,就把其中的一个相邻顶点压入栈中。重复这一过程,直到栈中的元素全部被遍历完毕。
  • 广度优先遍历:选定一个顶点,把该顶点的相邻顶点放进队列尾部。访问队列头部的顶点,把该顶点移出队列,如果该顶点有相邻顶点,就把相邻顶点放进队列尾部。重复这一过程,直到队列中的元素全部遍历完毕。

下载地址:https://idea-instructions.com/graph-scan/ 

一笔画 

一笔画是一种 Fleury 算法,旨在优雅地找出图中的欧拉(Eulerian)路径。欧拉路径是图中的一条路径,刚好经过每条边,并且每条边只被访问一次。 

 

  • 顶点度数表示该顶点有几条边。
  • 如果图中有且仅有两个顶点的度数为奇数,其他为偶数,或者不存在奇数度数的顶点,则存在欧拉路径。
  • 选定一个顶点开始画路径。
  • 如果存在两个以上的桥,那么可以走桥。如果只剩下一个桥,就不能走桥,除非只剩下桥可以走。
  • 如果还有没有走过的边,重复步骤 4。
  • 成功画出欧拉路径。

下载地址:https://idea-instructions.com/euler-path/ 
原文链接:https://idea-instructions.com/

 

分享到:
评论

相关推荐

    高职文科生C语言教学研究.pdf

    在探讨高职文科生学习C语言的难题及教学方法之前,首先需要了解C语言这门课程的特点与重要性。C语言作为计算机专业及相关领域不可或缺的基础课程,其在处理能力、表现能力、目标程序效率和可移植性方面表现出色。...

    一篇让文科生也能读懂机器学习文章.pdf

    当你在街道上看 到一个眼睛蓝色、头发金色、鼻梁高挺的人,心想这肯定又是一个白种人老外。 我们看到蚂蚁搬家,知道要下雨是因为我们之前经历过很多次蚂蚁搬家,然后下雨的情况;我们 看到眼睛蓝色、头发金色、...

    央行工作论文 :东亚国家掉入中等收入陷阱原因之一是文科生太多.pdf

    央行工作论文 :东亚国家掉入中等收入陷阱原因之一是文科生太多

    高中地理教学中文科学生综合能力培养研究th.doc

    通过对文科生的学习现状和地理学习特点的调查,以及对文科生与地理学科关系的分析,我们可以确定培养地理综合能力的重点。在高中地理教学中,可以通过常规教学强化基础知识,通过解题技巧的训练提高解题能力,通过...

    文科生可以报哪些大学-.doc

    【标题】: 文科生可报考的大学及专业选择指南 【描述】: 本文将探讨文科生在选择大学及专业时的多种可能性,提供一个基础的学科门类概述,帮助家长和学生了解文科生可选择的专业范围。 【标签】: 教育, 大学专业, ...

    高职文科生C语言教学研究 (1).pdf

    【高职文科生C语言教学研究】的探讨主要集中在如何有效地教授非计算机专业的文科生学习C语言这一编程技术。由于C语言具有复杂的语法结构和抽象的概念,对于文科生来说,学习难度较大,主要体现在两个方面: 1. 心理...

    一个文科生对大数据和数字经济的理解.pdf

    一、全球竞争核心是以研究开发控制产业链 二、产业创新的前沿高度依赖于数据技术 三、AI是数字技术结晶,是改造现有产业的基石(麦肯锡APRIL 2018) 四、数字经济本质是经济活动数据化与经济增长软性化 ...

    文科生高考数学备考建议_高考数学备考策略.rar

    在高考这个重要的节点,文科生面对数学这门科目可能会感到一定的压力。然而,通过科学的备考策略和有效的学习方法,文科生同样可以提升数学成绩,甚至取得优异的表现。以下是一些针对文科生高考数学备考的建议和策略...

    文科生高考怎么考580以上.pdf

    文科生高考怎么考580以上.pdf

    文科生、理科生能报专业总结.docx

    总的来说,无论是文科生还是理科生,都有丰富的专业选择空间。在做出选择时,学生应结合个人兴趣、职业规划和院校特色进行综合考量,同时关注各年度的招生计划,以确保选择最符合自己发展的专业。

    文科生的第一次产品经理面试,我的4点想法.pdf

    作为一名文科生,想要进入产品经理的领域,首要任务是理解这个职位的核心要求。产品经理虽然不限专业,但必须展示出足以胜任的理由。在面试过程中,作者意识到“扬长避短”的重要性,不应过分追求技术性的技能,如...

    文科生在AI团队里,究竟能干嘛?.pdf

    ### 文科生在AI团队的角色与贡献 #### 一、找到AI可以帮到忙的高价值场景 在AI领域,文科背景的人才同样能够发挥重要的作用。尤其在探索AI应用场景时,他们的视角往往能带来全新的见解。 ##### 1.1 找寻高价值...

    高中数学教学论文新课程下文科学生数学学习状态的分析与对策.doc

    【标题】和【描述】提及的是关于高中数学教学中针对文科学生的数学学习状态的分析与对策,主要关注如何提升文科生的数学水平和成绩。【标签】为“资料”,表明这是教育领域的专业文档。 在【部分内容】中,文章首先...

    文科生讲述通过计算机等级考试的心得

    写在前面的话:在9月17日全国计算机等级考试进行之前,我们准备了本文,期望能够为即将参加考试的考生增加信心,同时祝愿各位考生能够顺利的取得好成绩,达到理想的目标。

    探究如何提高文科生政治课主观题的解题能力.docx

    【提高文科生政治课主观题解题能力策略】 在当前的高中教育中,新课改的理念不断深化,政治教育的地位愈发重要。面对文科生在政治课主观题上的困扰,教师需要采取有效措施来提升他们的解题能力。政治主观题不仅要求...

    高中政治趣味知识复习方法文理科生的区别素材

    高中政治趣味知识复习方法对文理科生的确存在不同的策略,因为两者在背景和学习习惯上有所差异。在准备高考或考研政治时,了解这些差异并制定相应的复习计划至关重要。 首先,对于文科生而言,他们在高中阶段已经...

    高三文科数学课PPT课件.pptx

    在数学这门科目上,对于文科生而言,具有特别的意义,因为它可以帮助提高学生的逻辑思维和问题解决能力。 课件还通过对比不同学生在模拟考试中的数学成绩,展示了数学成绩与信心之间的关联。例如,一些学生在经过一...

    新文科背景下文科院校的C语言教学改革研究.pdf

    总的来说,新文科背景下文科院校的C语言教学改革应注重学生主体性的发挥,关注学生的情感体验和学习动力,构建适应文科生特点的教学体系,从而提高教学效果,培养出符合新时代需求的复合型人才。通过不断探索和实践...

Global site tag (gtag.js) - Google Analytics