《算法图解》总结和代码分析
鬼 | 刀
Nothing is impossible.
展开
-
递归+栈
一个简单地递归函数设计 python3实现:#实例1:递归函数的设计def countdown(i): print(i) if i <= 0: return else: countdown(i-1) #调用自己的函数实现递归countdown(5) 一个简单调用栈的设计 python3实现:...原创 2018-12-07 16:49:05 · 172 阅读 · 0 评论 -
二分查找
仅当列表是有序时,二分查找才能正常进行。 一般而言,对于包含n个元素的列表,用二分查找最多需要log2(n)步,而简单的查找最多需要n步。 设计二分查找函数时,其是由两个参数组成,一个是有序数组,另外一个是需要查找那个元素。 python3代码实现:#定义二分查找函数def binary_search(list, item): low = 0 h...原创 2018-12-05 20:59:55 · 196 阅读 · 0 评论 -
选择排序
一般选择排序的时间复杂度为O(n*n) python代码实现选择排序 #定义一个在数组中能够找到最小元素的函数def findSmallest(arr): smallest = arr[0] #存储最小的值 smallest_index = 0 #存储最小元素的索引 for i in range(1, len(arr)): ...原创 2018-12-06 21:20:55 · 129 阅读 · 0 评论 -
广度优先搜索
一、什么是广度优先搜索 解决最短路径问题的算法被称为广度优先搜索,广度优先搜索是一种用于图的查找算法,其可以帮助回答两类问题:第一类问题:从节点A出发,有前往节点B的路径吗? 第二类问题:从节点A出发,前往节点B的哪条路径最短?二、一个在人际关系中寻找芒果销售商的算法实现图:具体的算法过程:需要用到图的实现、散列表、队列的知识(1)、创建一个队列,用于...原创 2018-12-10 21:38:14 · 280 阅读 · 0 评论 -
狄克斯特拉算法
1、狄克斯特拉算法的目的:找出没有负权边的加权图中的最快路径(从起点到终点)2、狄克斯特拉算法的步骤: 找出最便宜的节点,即可在最短时间内前往的节点 对于该节点的邻居,检查是否有前往他们更短的路径,如果有,就更新其开销(节点的开销指的是从起点出发前往该节点需要多长时间) 重复这个过程,直到对图中的每个节点都这样做了 计算最终...原创 2018-12-12 08:56:33 · 1227 阅读 · 0 评论