python
西祠梧桐
这个作者很懒,什么都没留下…
展开
-
算法图解书籍第一章算法简介读书笔记
二分查找算法的复杂度最多为: 对数是幂运算的逆运算 仅当列表是有序的时候,二分查找才管用. 算法的速度指的并非时间,而是操作数的增速二分查找法python版本 def binary_search(list, item): low = 0 high = len(list)-1 while low <= high: # mid = i...原创 2019-04-16 22:55:38 · 156 阅读 · 0 评论 -
算法图解第六章广度优先搜索读书笔记
图由节点和边组成.一个节点可能与众多节点直接相连,这些节点被称为邻居. 广度优先搜索是一种用于图的查找算法,可以帮助回答两类问题: 1)从节点A出发,有前往节点B的路径吗? 2)从节点A出发,前往节点B的哪条路径最短? 有向图和无向图(没有箭头,直接相连的节点互为邻居) 拓扑排序 树是一种特殊的图 广度优先搜索算法 from collections import dequegr...原创 2019-04-25 23:30:25 · 140 阅读 · 0 评论 -
算法图解第二章选择排序
选择排序的时间复杂度O() 算法python的实现 def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(1, len(arr)): if arr[i] < smallest: smallest = arr[i] ...原创 2019-04-17 22:52:58 · 116 阅读 · 0 评论 -
算法图解第七章狄克斯特拉算法读书笔记
广度优先搜索找出的是段数最少的路径;狄克斯特拉算法找出最快的路径. 狄克斯特拉算法包含4个步骤: 1)找出"最便宜"的节点,即可在最短时间内到达的节点. 2)更新该节点的邻居的开销. 3)重复这个过程,直到对图中的每个节点都这样做了. 4) 计算最终路径. 狄克斯特拉算法用于每条边都有关联数字的图,这些数字称为权重.带权重的图称为加权图,不带权重的图称为非加权图.要计算非加权图的最短路径,可使...原创 2019-05-01 17:33:39 · 201 阅读 · 0 评论 -
算法图解第三章递归笔记
每个递归函数都有两部分: 基线条件和递归条件.递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环. 所有函数调用都进入调用栈...原创 2019-04-18 22:23:57 · 130 阅读 · 0 评论 -
算法图解第四章快速排序学习笔记
分而治之(divide & conquer,D&C) 一种著名的递归式问题解决方法 使用D&C解决问题的过程包括两个步骤: 1) 找出基线条件,这种条件必须尽可能简单; 2)不断将问题分解(或者说缩小规模),直到符合基线条件 将长1680M宽640M的土地均匀的分成方块,且分出的方块要尽可能大. 思考: 适用于这小块地的最大方块,也是适用于整块地的最大方块 (参阅...原创 2019-04-18 22:37:25 · 105 阅读 · 0 评论 -
算法图解第五章散列表
散列函数"讲输入映射到数字" 散列函数总是将同样的输入映射到相同的索引. 散列函数将不同的输入映射到不同的索引. 散列函数知道数组有多大,只返回有效的索引. 散列表也被称为散列映射、映射、字典和关联数组.散列表也使用数组来存储数据. Python提供的散列表实现为字典. 散列表的填装因子=散列表包含的元素数 / 位置总数 一个不错的经验规则是:一旦填装因子大于0.7,就调整散列表的长...原创 2019-04-24 22:53:54 · 78 阅读 · 0 评论