算法图解
不吃辣的IT男
计算机科学与技术系的大学僧,目前学习C语言,Python语言,会持续更新学习干货,正在更新算法图解,需要相关电子版书籍的可以关注
微信公众号:不吃辣的IT男
展开
-
算法图解第六章广度优先搜索(学习笔记)
一、图简介如果用广度优先搜索方法:第一步(蓝色线条):从双子峰有两条路可以走,这两条路走完便走到2号点,此时并未走到金门大桥。第二步(黑色线条):此时并未发现发现黑色线条到达了金门大桥第三步(橙色线条):此时有一个线条到达了金门大桥,那么这条线路既可以到达金门大桥还是最短路径,因为这是我们第一次发现金门大桥,如果再进行第四步的话,就又有两条路线到达金门大桥但是它们都多走了一步,其实有点像(地毯式搜索)二、广度优先搜索现在假如你经营着一个苹果果园,你想要找苹果销售商。第一步:此时你开始搜索你原创 2020-06-20 10:07:56 · 556 阅读 · 0 评论 -
算法图解之散列表
一、前言:前面已经学习了两种数据结构:数组和链表如果你是商店老板,面对顾客对商品的价格的询问,你肯定希望找一个服务员可以马上回答出价格,但服务员要想记住所有商品价格的可能性很小。而你如果去使用数组存储包含两项内容的元素,然后按照商品名称排好序,那么你如果使用二分法去查找,那也得O(log n)时间,你想要的是O(1),而散列函数这时候就可以起作用了。二、散列函数散列函数就是无论你给它什么数据,它都还你一个数字。散列函数也必须满足一些要求:它必须是一致的,就是你如果输入Mike得到的是98,纳闷原创 2020-06-19 21:19:25 · 534 阅读 · 0 评论 -
算法图解第四章快速排序(递归的巧妙应用)(学习笔记)
这里写自定义目录标题一、分而治之一、分而治之假设你是农场主,有一小块土地。你要将这块地均匀地分成方块,且分出的方块要尽可能大。显然,下面的分法都不符合要求。如何将一块地均匀地分成方块,并确保分出的方块是最大的呢?使用D&C策略!D&C算法是递归的。使用D&C解决问题的过程包括两个步骤。(1) 找出基线条件,这种条件必须尽可能简单。(2) 不断将问题分解(或者说缩小规模),直到符合基线条件。这里我就用我画的图解释下:画的图可能不是很标准,你就当这里面都是正方形,原创 2020-06-14 21:55:34 · 334 阅读 · 0 评论 -
算法图解第三章--递归的深层次理解(学习笔记)
这里写目录标题一、推荐:二、基线条件和递归条件三、栈四、调用栈五、递归调用栈一、推荐:如果想更好的理解本文章,你可以看往期文章:算法图解第二章–选择排序法(数组,链表的进一步理解)(学习笔记)二、基线条件和递归条件def countdown(): print i countdown(i-1)这个代码会出现一直运行的情况(你可以按Ctrl+C停止运行),之所以会出现这样的情况是因为没有告诉它何时停止递归,所以每个递归函数都应该包含两部分:基线条件和递归条件,去避免形成无限循环。改良原创 2020-06-13 23:11:56 · 414 阅读 · 0 评论 -
算法图解第二章--选择排序法(数组,链表的进一步理解)(学习笔记)
这里写目录标题一、数组二、链表如果想更好的理解本文章,你可以看往期文章。一、算法图解第一章(二分查找法,运行时间,大O表示法)一、数组1、首先,应该都了解数组吧,它申请的内存都是连续在一起的。2、为了更好的理解,我们以例子来讲解。假如你和朋友们去电影院看电影,你们一共有3个人,此时计算机为你们分配了连续的3个位置,但此时又来了一位朋友,但你们现在坐的位置已经没有了位置(就是没办法坐在一起了),如图此时如果你是数组,你该怎么办呢?你就会请求计算机重新分配能容纳4个人的连续的内存,找到后你们四个人原创 2020-06-12 17:27:46 · 336 阅读 · 0 评论 -
算法图解第一章(二分查找法,运行时间,大O表示法)
引言:如果有100个数让你猜,你可能会用循环列举1到100依次检验,计算机的计算效率相比人高太多,这当然可以,但是假如你去字典中查找单词,而单词有240000个,你就需要240000步,而如果使用二分法,仅仅需要17步!一般而言,对于包含n个元素的列表,用二分法找最多需要log2\log_2log2n步,而简单查找最多需要n步!代码:函数里的low保存的是下限(小的那个数),high保存的是上限(大的那个数)...原创 2020-06-11 17:40:51 · 633 阅读 · 0 评论