#算法图解

算法图解之广度优先搜索

广度优先搜索的应用场景,如下:(1)编写国际跳棋AI,计算最少走多少步就可获胜;(2)编写拼写检查器,计算最少编辑多个地方就可将错拼的单词改为正确的单词,如将READED改为READER需要编辑一个地方;(3)根据你的人际关系网络找到关系最近的医生;假设你居住在旧金山,要从双子峰前往金门大桥。你想乘公交车前往,并希望换...

算法图解之散列表

专业术语表述,”将输入映射到数字”。散列函数具有如下要求:(1)它必须是一致的。如你输入blog得到的是wordpress,那么每次输入blog,得到的都必须为wordpress。(2)它应将不同的输入映射到不同的数字。如,如果一个散列函数不管输入是什么都返回1,它就不是好的散列函数。最理想的情...
代码星球 ·2020-07-24

算法图解之快速排序

书中举了一个例子,假设你是农场主,有一块土地,如图所示: 你要将这块地均匀分成方块,且分出的方块要尽可能大。  从图上看,显然是不符合预期结果的。那么如何将一块地均匀分成方块,并确保分出的方块是最大的呢?使用D&C策略。(1)D&C算法是递归的;(2)使用D&C解决...
代码星球 ·2020-07-24

算法图解之递归

图一:  图二:   图一和图二对比,它们的作用都是相同的。从流程上分析,图一流程相对比较复杂,而图二则简单明了,这是某位同行在stackoverflow上面说过的话:如果使用循环,程序的性能可能更高;如果使用递归,程序可能更容易死理解。如何选择要看什么对你来说跟重要。...
代码星球 ·2020-07-24

算法图解之二分查找

简单查找,如下图: 从图可知那个眼镜男从1开始猜,猜到100,大家都知道这种猜法最终都会得到答案,就是时间问题而已。100毕竟是这个列表的最大长度。但是换言之,如果是一万、百万、上千亿呢?那么这种猜法虽然能够得到答案,但是时间方面的成本将会非常大。于是二分法应需而生。二分法,如下图:从图可知这次眼镜男学聪明了...
代码星球 ·2020-07-24

算法图解之内存的工作原理

 其中fe0ffeeb是一个内存单元的地址,需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式,一种是数组,另外一种是链表。但它们并非都适用于所有情形,因此知道它们的差别非常重要。...

算法图解之大O表示法

大O表示法是一种特殊的表示法,指出了算法的速度有多快。关于算法的运行时间以不同的速度增加,我联系到平时写代码,严谨的代码(易读,可扩展,精悍,经过多方测试等),通常运行速度与那些不严谨的代码(完全相反)的代码进行对比,你会发现前者的运行速度是大于后者,这个虽然不能说绝对,大多情况都是这样的。以我之前VsCode插件开发...
代码星球 ·2020-07-24

算法图解之数组和链表

1.数组以添加第四个待办事项为例,但后面的那个抽屉已经放了别人的东西这就像你与朋友去看电影,找到地方就坐后又来了一位朋友,但原来坐的地方没有空位置,只得再找一个方可坐下所有人的地方。在这种情况下,你需要请求计算机重新分配一块可容纳4个待办事项的内存,再将所有待办事项移到那里。如果又来了一位朋友,而当前坐的地方也没有空位...
代码星球 ·2020-07-24

算法图解之选择排序

假设你的计算机存储了很多乐趣。对于每个乐队,你都记录了其作品被播放的次数。如果你要将这个列表按播放次数从多到少的顺序排列,从而将你喜欢的乐队排序。该如何做呢?我第一眼看到这个问题时,想到的是通过sql解决这个问题假设如果这是一个数据表的话,我很容易就可以通过orderby字段名desc进行降序排序(也就是从大到小)不过...
代码星球 ·2020-07-24

《算法图解》——第一章 算法简介

⭐算法是一组完成任务的指令。 1  二分查找二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。猜想1-100中的一个数字,7次内就能猜到。如果是在240000个单词的字典中找寻一个单词,只需要18步。对于包含n个元素的列表,...

什么是Hash算法

什么是Hash算法Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法。哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表...
开发笔记 ·2024-09-30

ascii转hex算法

ASCII转Hex算法是一种将ASCII码转换为十六进制表示的方法。它将每个ASCII字符转换为一个十六进制数,方便人们阅读和理解。一、定义ASCII转Hex算法是一种将ASCII字符转换为十六进制表示的算法。它可以将每个ASCII字符转换为一个由两个字符组成的十六进制数,例如:A对应0x41,B对应0x42,以此类推...
开发笔记 ·2024-08-29

各种软件系统架构图解析

发布一企业技术架构图,供大家参考。  该技术架构图是本人根据多年企业技术架构经验而制定,是企业技术的总架构图,希望对CTO们有所借鉴。 简单说明:1.中间件基础运行环境是经过统一规划的以WebLogic、JBOSS为主的集群环境     &...

二叉树深度的算法

题目:二叉树用二叉链表表示,编写求二叉树深度的算法。答案是:intheight(BitreeT){ if(T==NULL)return0; u=height(T->lchild); v=height(T->rchild);  if(u>n)return...
开发笔记 ·2024-06-16

迪杰斯特拉算法原理

迪杰斯特拉算法(Dijkstra'sAlgorithm)是一种用于解决图中单源最短路径问题的贪心算法。该算法以荷兰计算机科学家艾兹赫尔·迪杰斯特拉(EdsgerDijkstra)的名字命名。以下是迪杰斯特拉算法的基本原理:初始化: 创建两个数组,一个用于存储从起始顶点到每个顶点的当前已知...
首页上一页12345...下一页尾页