摘要:
第八章 贪婪算法 1 简单的贪婪算法 每步都采取最优的做法,每步都选择局部最优解。 2 背包问题 有些情况下,完美是优秀的敌人。如果你只需要找到一个大致解决问题的算法,贪婪算法挺不错,因为实现容易,结果与正确结果相当接近。 练习8.1 你在一家家具公司工作,需要将家具发往全国各地,为此你需要将箱子装 阅读全文
摘要:
第七章 狄克斯特拉算法 1 使用狄克斯特拉算法(Dijkstra’s algorithm) 用下图举个🌰: 该算法的四个步骤: ①找出"最便宜的节点",即可在最短时间内到达的节点,先找出 ②更新该节点的邻居的开销 ③重复这个过程,直到对图中的每个节点都这样做了 ④计算最终路径 第一步:找出最便宜的 阅读全文
摘要:
第六章 广度有限搜索 1 图简介 假设你居住在旧金山,要从双子峰前往金门大桥。你想乘公交车前往,并希望换乘最少。可乘坐的公交车如下。 从双子峰出发,可沿下面的路线三步到达金门大桥。其他的都需要四步。 这种问题被称为最短路径问题(shortest-path problem),解决最短路径问题的算法被称 阅读全文
摘要:
第五章 散列表 1 散列函数(散列映射、映射、字典、关联数组) 散列函数是这样的函数,即无论你给它什么数据,它都还你一个数字。即散列函数"将输入映射到数字" 散列函数必须满足一些要求: ①它必须是一致的。 ②它应将不同的输入映射到不同的数字(后面有解释)。 一个🌰:首先,先创建一个空数组 在数组中 阅读全文
摘要:
第一章 算法简介 ⭐算法是一组完成任务的指令。 1 二分查找 二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。 猜想1-100中的一个数字,7次内就能猜到。 如果是在240000个单词的字典中找寻一个单词,只需要18步。 对于包含n 阅读全文
摘要:
第二章 选择排序 1 内存的工作原理 计算机就像是很多抽屉的集合体,每个抽屉都有地址。 需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。 2 链表 数组中添加新元素很麻烦,预留只是权变措施,有两处缺点: ①额外请求的位置可能 阅读全文
摘要:
第三章 递归 1 递归 大佬说:“如果使用循环,程序的性能可能更高;如果使用递归,程序可能更容易理解。如何选择要看什么对你来说更重要。” 2 基线条件和递归条件 每个递归函数都有两部分:基线条件(base case)和递归条件(recursive case)。递归条件指的是函数调用自己,而基线条件则 阅读全文
摘要:
第四章 快速排序 1 分而治之(divided and conquer,D&C) 第一个🌰:如何将一块地均匀地分成方块,并确保分出的方块是最大的呢? 使用D&C策略(并非解决问题的算法,而是一种解决问题的思路)!D&C解决问题的两个步骤: ①找出基线条件,尽可能的简单 ②不断讲问题分界,或者说缩小 阅读全文