
算法
文章平均质量分 65
搬砖小测试
认识志同道合的小伙伴 分享知识 积极向上 突破自我
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《图解算法》阅读08—快速排序算法
快速排序比选择排序常见的多,快速排序采用分而治之的思想。原创 2018-12-04 16:24:21 · 156 阅读 · 0 评论 -
《图解算法》阅读14—贪婪算法
学会处理不可能完成的任务(NP完全问题)学习识别NP完全问题学习近似算法,使用它们可快速找到NP完全的近似解学习贪婪算法——一种非常简单的问题解决策略教室调度问题排课的算法如下所示。选出结束最早的课,它就是要在这间教室上的第一堂课接下来,选择第一堂课结束后才开始的课。同样,选择结束最早的课是在这间教室上的第二堂课,重复就能这一步骤,直至教室排满课程。这就是贪婪算法,每步都采取...原创 2018-12-18 11:04:24 · 305 阅读 · 0 评论 -
《图解算法》阅读17—接下来如何做:10种算法的简单介绍
这一章作者简单地介绍了10种算法的主要思想和用处,简单地看一下,理解一下。树反向索引傅里叶变化MapReduce布隆过滤器SHA算法局部敏感的散列算法Diffie-Hellman 密钥交换线性规划...原创 2018-12-19 23:11:05 · 233 阅读 · 0 评论 -
《图解算法》阅读16—K最邻近算法
学习使用K最邻近算法创建分类系统学习特征抽取学习回归学习K最邻近算法的应用案例和局限性创建推荐系统如果我们建立一个电影推荐系统,可以将用户放在多维坐标系中,我们认为用户在坐标系中的位置取决于其喜好,因此喜好相似的用户距离较近。如果我们想向一个用户推荐电影,只要推荐与他喜好相近的用户喜欢的电影即可。那么如何确定两位用户的相似程度呢?特征抽取我们首先抽取用户的特征,然后计算两个用户...原创 2018-12-19 22:52:15 · 762 阅读 · 0 评论 -
《图解算法》阅读13—狄克斯特拉算法
使用狄克斯特拉算法狄克斯特拉算法包含4个步骤:找出“最便宜”的节点,即可在最短时间内到达的节点更新该节点的邻居的开销,其含义将稍后介绍重复这个过程,直到对图中的每个节点都这样做了计算最终路径术语狄克斯特拉算法用于每条边都有关联数字的图,这些数字称为权重(weight)。带权重的图称为加权图(weighted gragph),不带权重的图称为非加权图(unweighted grap...原创 2018-12-13 22:47:37 · 408 阅读 · 0 评论 -
《图解算法》阅读12—广度优先算法
图简介解决最短路径的算法被称为广度优先搜索。图是什么图模拟一组连接。图由节点(node)和边(edge)组成。一个节点可能与众多节点相连,这些节点被称为邻居。广度优先搜索广度优先搜索是一种用于图的查找算法,可以帮助解决两种问题。从节点A出发,有前往节点B的路径吗从节点A出发,前往节点B的哪条路径最短查找最短路径在广度优先搜索的执行过程中,搜索范围从起点开始逐渐向外延伸,即先检...原创 2018-12-06 16:50:17 · 219 阅读 · 0 评论 -
《图解算法》阅读11—散列表的冲突和性能
冲突原创 2018-12-05 14:08:03 · 331 阅读 · 1 评论 -
《图解算法》阅读08—分而治之的思想
分而治之(divide and conquer)是一种著名的递归式问题解决方法。使用分而治之的思想解决问题的过程包括两个步骤:找出基线条件,这种条件必须尽可能简单。不断将问题分解(缩小规模),直到符合基线条件。书中提出了几个具体的例子来解释分而治之的思想。如果有一个农场主,有一块地,我们如何让将这块地分成大小相同的方块,并且分出的方块要尽可能大。首先,我们可以利用循环来解决这个问...原创 2018-12-03 10:32:35 · 571 阅读 · 0 评论 -
《图解算法》阅读03—大O表示法
大O表示法大O表示法是表示算法运行时间的一种表示法。算法的运行时间以不同的速度增加以简单查找和二分为例,两个算法的运行规模不同,运行时间分别为线性时间和对数时间。二分法运行的时间短,但是简单查找法出现bug的可能性低。举个书中的例子,当列表中的元素数分别为100和1亿时,二分法和简单查找法的运行时间如下表所示。元素数目简单查找二分法100100毫秒7毫秒1...原创 2018-12-01 11:57:57 · 371 阅读 · 2 评论 -
《图解算法》阅读02—二分法
二分查找二分查找应该是比较基础的算法了,但是自己太渣了,一切要从头开始复习。查找问题都可以使用二分查找的算法来解决。二分查找的输入是一个有序的元素列表,如果查找的元素在列表中,二分法返回其位置,否在返回空值。更佳的查找方法我们直接利用简单查找法对列表进行查询是低效的。举个书中提到的例子,我们经常的聚会中玩的猜数字游戏。目标数字在1-100之间,我们简单地从1一直按照顺序往后猜是低效的,...原创 2018-11-30 22:52:31 · 776 阅读 · 0 评论 -
《图解算法》阅读10—散列函数
散列函数散列函数将输入映射到数字,散列函数必须满足一些要求。散列函数得到的结果必须是一致的。散列函数将不同的输入映射到不同的数字。散列函数准确地指出了输入变量对应的变量的存储位置,对于查找算法来说,并不需要查找。散列函数与索引的关系如下:散列函数总是将同样的输入映射到相同的索引。散列函数将不同的输入映射到不同的索引。散列函数知道数组有多大。散列表是一种包含额外逻辑的数据结构,使用...原创 2018-12-04 23:23:59 · 420 阅读 · 0 评论 -
《图解算法》阅读07—如何理解栈和调用栈
之前学习数据结构课程的时候,对栈的理解就是“先进后出,后进先出”,理解的很浅薄,期待这次阅读带给自己不一样的理解。栈调用栈(call stack)不仅对编程来说很重要,对递归函数也很重要。stack中文是“堆”的意思,通俗一点可以将栈理解为类似木桶的放东西的容器,只有一个口可以取东西。放东西只能放在最上面,想要拿东西时只能从最上面拿。并且只有两种操作:插入和弹出(删除并读取)。下面是维基百科的...原创 2018-12-02 23:08:15 · 338 阅读 · 0 评论 -
《图解算法》阅读06—如何理解递归算法
递归如果使用了循环,程序的性能可能更高;如果使用递归,程序可能更容易理解。个人认为很多时候许多递归算法是简洁的,同时也是难以理解,更难以真正自己想出来的。不知道是因为自己看得少,对递归算法不够理解,还是因为递归算法真的很难。希望自己在阅读并实现这一章节的算法后能够得出一个答案。本书提出的一个在类似俄罗斯套娃的盒子中寻找钥匙的问题,并分别使用简单的循环和递归算法进行解决。当使用循环算法...原创 2018-12-02 21:49:10 · 1024 阅读 · 0 评论 -
《图解算法》阅读05—选择排序
书中举了一个将音乐的播放列表按照顺序进行排序的例子。我们需要将播放列表按照播放次数进行排序,从而选出最喜欢的音乐。第一种方法,创建一个新的列表,遍历播放列表,每次将播放量第n大的歌曲放置到新的列表中。这种简单的排序算法的时间复杂度为O(n*n)。这种算法叫做选择排序。算法实现下面在python3中实现选择排序,每次选择第n大的元素,从而实现排序。关键点:良好的编程习惯,将算法分解成寻找...原创 2018-12-02 20:46:00 · 193 阅读 · 0 评论 -
《图解算法》阅读04—数据结构:链表和数组
内存的工作原理需要将数据存储到内存时,请求计算机提供存储空间,计算机返回一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。数组和链表使用数组进行存储数据时,所存储的数据在内存中都是相连的。当向数组中添加新元素时,如果原来存储的内存没有了空间,就移到内存的其他地方,添加新元素的速度很慢。一种权变的解决措施是,为每一块数据提供多余的内存空间。但是这种预留的措施同样存在缺点:一是浪...原创 2018-12-02 19:05:50 · 242 阅读 · 0 评论 -
《图解算法》阅读09—快速排序和归并排序
快速排序的时间复杂度关于如何分析快速排序的时间复杂度自己一直不是很清楚,在看到快速排序最好,最坏,平均复杂度分析这篇文章后,作为一个小白也很快理解了,推荐给大家阅读以下。文章中的一个主要思想就是利用递归树来描述递归算法的执行情况。快速排序的最好情况:树的每个节点是带排序序列的中间值,递归树是平衡的,此时的性能很好。在最优的情况下,递归树的深度为(log2 n)+1仅需要递归log2n次。快...原创 2018-12-04 20:53:34 · 246 阅读 · 0 评论 -
《图解算法》阅读15—动态规划
学习动态规划,他将问题分成小问题,并先着手解决这些小问题;学会设计问题的动态规划解决方案。背包问题回顾前面一小节的背包问题,假设一个小偷,背着一个可以装4磅东西的背包,如何盗窃使得商品的价值最高?简单算法尝试商品组合的全排列,找出价值最高的组合。这也是本人一直以来的思维方式,简单粗暴。恰好,上周的实习生面试,给自己敲响了警钟,这种完全不考虑运行时间和内存溢出的算法,在面试的过程中会被锤的很...原创 2018-12-18 18:47:07 · 391 阅读 · 1 评论