首页 > 编程语言 > 详细

图解算法记录

时间:2019-06-12 09:31:45      阅读:129      评论:0      收藏:0      [点我收藏+]

每个递归函数都有两个条件:基线条件和递归条件。

编写涉及数组的递归函数时,基线条件通常是数组为空或只包含一个元素。

def quicksort(arr):
    if len(arr)<2:
        return arr
    else:
        p=arr[0]
        less=[i for i in arr[1:] if i<=p]
        greater=[i for i in arr[1:] if i>p]
        return quicksort(less)+[p]+quicksort(greater)
a=[2,6,1,9,3]
print(quicksort(a))

python中的字典dict

散列表由键和值组成。在散列表 book 中,键为商品名,值为商品价格。散列表将键映射到值。

phone_book = {} ←------与phone_book = dict()等效

book=dict()
book["apple"]=2.0
book["cherry"]=5.0
print(book)
print(book["cherry"])


{apple: 2.0, cherry: 5.0}
5.0

在无向图中,每条边都是一个环。狄克斯特拉算法只适用于有向无环图。

如果有负权边,就不能使用狄克斯特拉算法。

狄克斯特拉算法这样假设:对于处理过的节点,没有前往该节点的更短路径。

 

元素较少时算法的运行速度非常快,但随着元素数量的增加,速度
会变得非常慢。
涉及“所有组合”的问题通常是NP完全问题。
不能将问题分成小问题,必须考虑各种可能的情况。这可能是NP
完全问题。
如果问题涉及序列(如旅行商问题中的城市序列)且难以解决,它
可能就是NP完全问题。
如果问题涉及集合(如广播台集合)且难以解决,它可能就是NP
完全问题。
如果问题可转换为集合覆盖问题或旅行商问题,那它肯定是NP完
全问题。

 

面临NP完全问题时,最佳的做法是使用近似算法。

 

仅当每个子问题都是离散的,即不依赖于其他子问题时,动态规划才管用。

垃圾邮件过滤器使用一种简单算法——朴素贝叶斯

 

Google使用Simhash来判断网页是否已搜集。
老师可以使用Simhash来判断学生的论文是否是从网上抄的。

 

图解算法记录

原文:https://www.cnblogs.com/wander-clouds/p/9125441.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!