算法图解
Yang on
扶我起来,我还能学
展开
-
【算法图解】第七章:7.5(狄克斯特拉算法优化版)
请求参数为:图对应的散列表graph,开始节点start(可选,不选默认为’start’) def solution(graph, start='start'): processed = [] # 定义列表记录已计算开销的节点 parents = {} # 定义父节点散列表 costs = {} # 定义开销散列表 parents_keys = [k for k in graph.keys() if k != start] for key in parent原创 2021-02-26 14:35:27 · 89 阅读 · 0 评论 -
【算法图解】第六章:6.3(广度优先查找)
我就不说其他了,直接放代码了 from collections import deque ''' 在名字为name的关系网中找芒果经销商的人,使用广度优先,先找一级关系再找二级关系 ''' def search(name, AllDict): search_queue = deque() search_queue += AllDict[name] searched = [] while search_queue: person = search_queu原创 2021-02-26 14:07:10 · 83 阅读 · 0 评论 -
【算法图解】第七章:7.5(狄克斯特拉算法完整代码)
以下为我整理的狄克斯特拉算法完整代码请大家指正(经过测试练习亦通过) # 这里的参数理论上可以只传图对应的散列表,起始通过key值来确定costs和parents,时间原因这里先不优化 def solution(costs, parents, graph): processed = [] # 定义列表记录已计算开销的节点 node = find_lowest_cost_node(costs=costs, processed=processed) # 调用函数找到消费散列表中开销最小但未原创 2021-02-22 19:51:01 · 152 阅读 · 2 评论 -
【算法图解】第四章:4.2(快速排序的理解)
快速排序源码 def quicksort(arr): if len(arr) < 2: return arr else: pivot = arr[0] less = [x for x in arr[1:] if x <= pivot] greater = [x for x in arr[1:] if x > pivot] return quicksort(less) + [pivot] + qu原创 2021-02-21 11:15:18 · 123 阅读 · 6 评论 -
【算法图解】第四章:4.1-4.4(递归练习)
以下为我编写的练习递归函数,如果存在问题和可以优化的点请大家指正 4.1请编写前述sum 函数的代码 def sum(a): if len(a) == 0: return 0 return a.pop() + sum(a) 4.2编写一个递归函数来计算列表包含的元素数 def count(a): if len(a) == 0: return 0 a = a[1:] return 1 + count(a) 4.3找出列表中最大的数字原创 2021-02-21 10:11:42 · 265 阅读 · 0 评论