51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#算法的乐趣
算法系列之选择排序算法
排序算法的中心思想就是每次从待排序的数组中获取一个最小值或者最大值,将每次获取的最大值或者最小值放到新的数组中形成一个有序列表。具体做法是:1先将数组中的第一位假设成最小值min,拿它与数组中的其他数据作比较,发现更小值则更新min的值为更小值 &n...
代码星球
·
2020-07-28
算法
系列
选择
排序
算法图解之广度优先搜索
广度优先搜索的应用场景,如下:(1)编写国际跳棋AI,计算最少走多少步就可获胜;(2)编写拼写检查器,计算最少编辑多个地方就可将错拼的单词改为正确的单词,如将READED改为READER需要编辑一个地方;(3)根据你的人际关系网络找到关系最近的医生;假设你居住在旧金山,要从双子峰前往金门大桥。你想乘公交车前往,并希望换...
代码星球
·
2020-07-24
算法
图解
广度
优先
搜索
算法图解之散列表
专业术语表述,”将输入映射到数字”。散列函数具有如下要求:(1)它必须是一致的。如你输入blog得到的是wordpress,那么每次输入blog,得到的都必须为wordpress。(2)它应将不同的输入映射到不同的数字。如,如果一个散列函数不管输入是什么都返回1,它就不是好的散列函数。最理想的情...
代码星球
·
2020-07-24
算法
图解
之散
列表
初学者摸索之算法学习
此文转自我个人微信公众号,时间虽然过去已经四个多月了,但是我个人认为还是能够给大家带来启发意义,所以借这个时间分享给大家,微信公众号分享比较有限,而且时效性也比较差,而博客时效性比较好,而且还能集思广益,欢迎朋友在评论区留言,俗话说,众人拾柴火焰高。原文如下:春节的假期在家待了10天。明天就要回北京了。微信公众号文章也...
代码星球
·
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是一个内存单元的地址,需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式,一种是数组,另外一种是链表。但它们并非都适用于所有情形,因此知道它们的差别非常重要。...
代码星球
·
2020-07-24
算法
图解
内存
工作
原理
算法图解之大O表示法
大O表示法是一种特殊的表示法,指出了算法的速度有多快。关于算法的运行时间以不同的速度增加,我联系到平时写代码,严谨的代码(易读,可扩展,精悍,经过多方测试等),通常运行速度与那些不严谨的代码(完全相反)的代码进行对比,你会发现前者的运行速度是大于后者,这个虽然不能说绝对,大多情况都是这样的。以我之前VsCode插件开发...
代码星球
·
2020-07-24
算法
图解
之大
示法
算法图解之数组和链表
1.数组以添加第四个待办事项为例,但后面的那个抽屉已经放了别人的东西这就像你与朋友去看电影,找到地方就坐后又来了一位朋友,但原来坐的地方没有空位置,只得再找一个方可坐下所有人的地方。在这种情况下,你需要请求计算机重新分配一块可容纳4个待办事项的内存,再将所有待办事项移到那里。如果又来了一位朋友,而当前坐的地方也没有空位...
代码星球
·
2020-07-24
算法
图解
数组
链表
算法图解之选择排序
假设你的计算机存储了很多乐趣。对于每个乐队,你都记录了其作品被播放的次数。如果你要将这个列表按播放次数从多到少的顺序排列,从而将你喜欢的乐队排序。该如何做呢?我第一眼看到这个问题时,想到的是通过sql解决这个问题假设如果这是一个数据表的话,我很容易就可以通过orderby字段名desc进行降序排序(也就是从大到小)不过...
代码星球
·
2020-07-24
算法
图解
选择
排序
LeetCode算法题详解之两个数组的交集
题目背景: 这个与我们高中时期学习的交集是一样的,顺便复习一下相关的数学知识有助于更好的理解。交集的定义: 对于两个集合A和B,定义A和B的交集为C,其中C={x|x属于A且X属于B},记作A∩B。如图所示: 解题思路一:publicint[]intersect(int...
代码星球
·
2020-07-24
LeetCode
算法
详解
两个
数组
<数据结构与算法分析>读书笔记--运行时间中的对数及其分析结果的准确性
分析算法最混乱的方面大概集中在对数上面。我们已经看到,某些分治算法将以O(NlogN)时间运行。此外,对数最常出现的规律可概括为下列一般法则:如果一个算法用常数时间(O(1))将问题的大小削减为其一部分(通常是1/2),那么该算法就是O(logN)。另一方面,如果使用常数时间只是把问题减少一个常数的数量(如将问题减少1...
代码星球
·
2020-07-24
读书
笔记
运行
时间
中的
<数据结构与算法分析>读书笔记--最大子序列和问题的求解
现在我们将要叙述四个算法来求解早先提出的最大子序列和问题。第一个算法,它只是穷举式地尝试所有的可能。for循环中的循环变量反映了Java中数组从0开始而不是从1开始这样一个事实。还有,本算法并不计算实际的子序列;实际的计算还要添加一些额外的代码。publicstaticintmaxSubSum1(int[]...
代码星球
·
2020-07-24
读书
笔记
最大
序列
题的
<数据结构与算法分析>读书笔记--运行时间计算
有几种方法估计一个程序的运行时间。前面的表是凭经验得到的(可以参考:<数据结构与算法分析>读书笔记--要分析的问题)如果认为两个程序花费大致相同的时间,要确定哪个程序更快的最好方法很可能将它们编码并运行。一般地,存在几种算法思想,而我们总愿意尽早除去那些不好的算法思想,因此,通常需要分析算法。不仅如此,进行...
代码星球
·
2020-07-24
读书
笔记
运行
时间
计算
首页
上一页
...
53
54
55
56
57
...
下一页
尾页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他