
从0到1学算法
KEN DO EVERTHING
Go AHEAD!
展开
-
【从0到1学算法】散列表
这可能是这么多种数据结构中最有用的-----散列表。一、什么是散列表超市中用到的条形码,每个码对应一个商品,扫一下马上就能知道商品的价格,查询速度O(1)。哪种数据结构能做到这样?那只有散列表了。散列函数首先需要理解散列函数,散列函数是散列表的灵魂。散列函数是这样的函数,无论你给他什么数据,它都还给你一个数字。专业点说,就是散列函数“将输入映射到数字”。散列函数映射数字有这些规则:...原创 2020-04-22 20:49:17 · 310 阅读 · 1 评论 -
【从0到1学算法】递归
今天我们将学习一种优雅的问题解决方式–递归。 对于它,通常有3个阵营:恨它的、爱它的以及恨了几年后又爱上它。你属于哪一个?1、递归递归就是函数自己调用自己,但写递归很容易出错而导致死循环。循环和递归是可以相互转换,下面从一个简单例子学习递归。现在需要编写一个倒计时函数。效果如下:321循环方式代码:def countdown(i): # 从i开始, 到0结束(不包括0),每次循...原创 2020-03-12 23:10:05 · 275 阅读 · 0 评论 -
【从0到1学算法】快速排序
系列文章导航:【从0到1学算法】二分查找法【从0到1学算法】大O表示法【从0到1学算法】 数组和链表【从0到1学算法】选择排序【从0到1学算法】递归今天我们将学习快速排序,是最快的排序算法之一,速度比选择排序快得多!一、分而治之在学习快速排序前,先上开胃菜,快速排序中用到的算法–分而治之(divide and conquer, D&C,分治法)。只能解决一种问题的算法毕竟用...原创 2020-03-12 20:27:26 · 372 阅读 · 0 评论 -
【从0到1学算法】选择排序
又到了算法时间,今天我们来学第二种算法—选择排序。这里有个表格,记录了乐队及其作品的播放次数,如下:要将它们按播放次数从多到少排序,要怎么做呢?有一种方法是这样子的,遍历列表,找出播放次数最多的乐队,将这个乐队添加到一个新的列表中。再次这样做,找出第二多的乐队。循环上述做法,最终便可得到一个有序列表。上述这种算法便是选择排序法,n次遍历列表选出最大/小进行排序。我们用代码来一遍呗。题目:对...原创 2020-02-16 23:14:50 · 195 阅读 · 0 评论 -
【从0到1学算法】 数组和链表
今天讲最基本的数据结构,数组和链表。如果你已经滚瓜烂熟,可以跳过本文或选择查缺补漏。内存的工作原理假设你正要去超市,需要寄存两样东西。这个超市的寄存柜,一个抽屉只能放一个东西,所以你需要两个抽屉。将东西分别放到了1号和2号抽屉里。服务员将号码牌给你后,就可以去shopping了,购物完,凭号码牌拿东西即可。这大致就是计算机内存的工作原理,计算机内存就像很多抽屉,各个抽屉都有地址,根据地...原创 2020-02-16 22:58:01 · 172 阅读 · 0 评论 -
【从0到1学算法】大O表示法
一般我们在选择算法时,都是想要选择效率最高的算法。那算法的效率,用什么表示?没错!就是用大O表示法。PS: 大O表示法中,log即为log2,后面不再说明。下面以简单查找和二分查找,在含有n个元素的有序列表中查找其中一个元素为例,下表总结了我们发现的情况。使用简单查找时,最多需要猜测次数与列表长度相同,这被称为线性时间,大O表示法为O(n)。二分查找则不同,最多需要猜测次数为logn(n...原创 2020-02-05 17:24:09 · 401 阅读 · 1 评论 -
【从0到1学算法】二分查找法
说到算法,大家应该都会脑壳疼吧。除了应付一下面试,准备过算法,也接触过不少算法,但是面试完了,基本上就忘光了。但不得不说,算法真的很重要,算法是解决问的方法,你可能会说根本用不上,那只是因为你根本没有算法的思维,又如何说得上使用呢。在这里,我会和大家一起重学算法,阅读《图解算法》入门算法经典书籍,然后根据个人知识进行整理与补充而编写的文章。今天讲的二分查找法,如果你对这个算法很熟请忽略或者复习一下...原创 2020-02-05 17:07:09 · 569 阅读 · 0 评论