算法
     分类:DevPython     有: 0 条评论

算法

     分类:DevPython     有: 0 条评论

注意!所有没有直接贴出代码的都是未验证或未弄懂的。

大部分是Python实现的算法,,或者是思路,也包含了一些其他语言的,未实现的算法等等。

微信大佬总结的算法学习经验:https://mp.weixin.qq.com/s/fECqsr3T4WKNcx7s-2ozuA


Github算法库(C实现)

https://github.com/imhuay/Algorithm_Interview_Notes-Chinese/tree/master/C-%E7%AE%97%E6%B3%95

Github算法库(Python实现)

https://github.com/TheAlgorithms/Python


看漫画理解时间复杂度

https://mp.weixin.qq.com/s/OiRlAumegK52pxiX6TH1zA
https://mp.weixin.qq.com/s/NSbhkhbzIuzozEFrTL6EkA


10大算法

https://mp.weixin.qq.com/s/df6OA4HTsKIncUNZGnYaTQ
https://linux.cn/article-3125-1.html


各种算法的Python实现

https://www.bookstack.cn/read/Python-and-Algorithm/README.md


图解机器学习的常见算法

https://my.oschina.net/taogang/blog/1544709


文章资料

算法复杂度速查表

https://mp.weixin.qq.com/s/Kx8WtOwpqm1tLPZW2SO7EA


常用算法介绍

二分查找、快速排序、散列表、广度优先搜索、迪克斯特拉算法、贝尔曼-福德算法、贪心算法


机器学习十大常用算法

https://mp.weixin.qq.com/s/tbIvxmoqYPgj-oAqg6plpg



加密

MD5

什么是MD5算法?:https://mp.weixin.qq.com/s/k-ToL356asWtS_PN30Z17w
如何破解MD5算法?:https://mp.weixin.qq.com/s/fLwwu9Ol21SfMRBzA_OyQg

AES

什么是AES算法?(整合版):https://mp.weixin.qq.com/s/Q99jGZOUGFiM-ZTnkWWYew


topN

https://mp.weixin.qq.com/s/bMDy8_Kwr1MKpL6-NrSYFQ


LRU算法

https://mp.weixin.qq.com/s/h_Ns5HY27NmL_odCYLgx_Q


排序算法

计数排序(稳定排序)

https://mp.weixin.qq.com/s/WGqndkwLlzyVOHOdGK7X4Q


外部排序

https://mp.weixin.qq.com/s/EQ41XdgD4FebtHG5Knxtmg


桶排序

https://mp.weixin.qq.com/s/qrboxA5SwN7AbAcpZ_dpNQ

参考:
十大经典排序算法
Python 排序算法[一]:令你茅塞顿开,却又匪夷所思:https://mp.weixin.qq.com/s/Fy9_eVcsytccYR9U05mh7g
Python排序算法[二]:测试数据的迷雾散去:https://mp.weixin.qq.com/s/XWp1A9vAOLoL1E78WRwuJw


深度&&广度优先遍历

深度优先

def depth_tree(tree_node):
    if tree_node is not None:
        print (tree_node._data)
        if tree_node._left is not None:
            return depth_tree(tree_node.left)
        if tree_node._right is not None:
            return depth_tree(tree_node,_right)

LeetCode 深度优先遍历:https://mp.weixin.qq.com/s/399HlssIRUn4QsUBVwidcw


广度优先

def level_queue(root):
    #利用队列实现树的广度优先遍历
    if root is None:
        return
    my_queue = []
    node = root
    my_queue.append(node)
    while my_queue:
        node = my_queue.pop(0)
        print (node.elem)
        if node.lchild is not None:
            my_queue.append(node.lchild)
        if node.rchild is not None:
            my_queue.append(node.rchild)

参考:
python 实现二叉树的深度&&广度优先遍历
几道和「二叉树」有关的算法面试题:https://mp.weixin.qq.com/s/AHmQN920hLar85T6PHZhoA
深度优先遍历 和 广度优先遍历:https://mp.weixin.qq.com/s/WA5hQXkcACIarcdVnRnuiw


二分查找

# 还有一点问题,元素多的时候会出现None。
def binary_search(list, item):
    """
    传入列表,和要对比的值item,item在列表中会返回元素所在位置下标值,不在列表中返回None。
    :param list: 传入一个列表
    :param item: 要对比的值
    :return: None or list[x]
    """
    low = 0
    high = len(list)-1

    while low <= high:
        mid = int((low + high)/2)  #获取中间元素的下标,这里要为整数,不能为浮点值
        guess = list[mid]          #获取中间元素的值
        if guess == item:
            return mid             #返回该元素的下标
        if guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return None

# 测试
my_list = [1, 3, 5, 7, 9]
print(binary_search(my_list, 5))
#结果是:2

AVL(自平衡二叉查找树)

https://mp.weixin.qq.com/s/bGeEj_ATiu134DPnKL9WNg

2-3树

是在二叉搜索树 (BST) 和二叉平衡树 (AVL)的基础上进行了优化
https://mp.weixin.qq.com/s/qqugzuLxJ8ja7oyMgn7bEQ


决策树

Github:https://github.com/tushushu/imylu/blob/master/examples/decision_tree_example.py

https://github.com/tushushu/imylu/blob/master/imylu/utils.py
https://github.com/tushushu/imylu/blob/master/imylu/tree/decision_tree.py

梯度下降

https://mp.weixin.qq.com/s/k26Fm0GL3fdVA9VbQIVAuQ


回归树

原理介绍:
https://mp.weixin.qq.com/s/bOMn489s3HEuzZ3iuVCbJw
https://mp.weixin.qq.com/s/CmTE_EvmvnawWDqjS3eUXQ
https://github.com/tushushu/imylu/blob/master/docs_cn/regression_tree.md
Github:https://github.com/tushushu/imylu/blob/master/examples/regression_tree_example.py
Github:https://github.com/tushushu/Imylu/blob/master/regression_tree.py

https://github.com/tushushu/imylu/blob/master/imylu/utils.py
https://github.com/tushushu/imylu/blob/master/imylu/tree/regression_tree.py

GBDT(梯度提升决策树)

GBDT回归的原理及Python实现:https://mp.weixin.qq.com/s/t7kxG9_6ZBIKpuKFZBU0Jg
GBDT分类的原理及Python实现:https://mp.weixin.qq.com/s/JEGSQcCBxQgfhiuh9XpIEg
GBDT梯度提升决策树:https://www.jianshu.com/p/005a4e6ac775

梯度提升决策树

https://github.com/tushushu/imylu/blob/master/imylu/ensemble/gbdt_base.py

ThunderGBM

快成一道闪电的梯度提升决策树
https://mp.weixin.qq.com/s/wCxiN1ZcnHZtOch5loOnlA
GitHub:https://github.com/Xtra-Computing/thundergbm


GBDT_classifier(梯度提升决策树分类器)

https://github.com/tushushu/imylu/blob/master/docs_cn/gbdt_classifier.md
Github:https://github.com/tushushu/imylu/blob/master/examples/gbdt_classifier_example.py

https://github.com/tushushu/imylu/blob/master/imylu/utils.py
https://github.com/tushushu/imylu/blob/master/imylu/ensemble/gbdt_classifier.py

GBDT_regressor(梯度提升决策树回归子)

https://github.com/tushushu/imylu/blob/master/docs_cn/gbdt_regressor.md
Github:https://github.com/tushushu/imylu/blob/master/examples/gbdt_regressor_example.py

https://github.com/tushushu/imylu/blob/master/imylu/ensemble/gbdt_regressor.py

高斯朴素贝叶斯

从头开始实现朴素贝叶斯算法;原文:

Github:https://github.com/tushushu/imylu/blob/master/examples/gaussian_nb_example.py

https://github.com/tushushu/imylu/blob/master/imylu/probability_model/gaussian_nb.py

Isolation Forest(孤立森林、孤立点检测)

一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或者基尼指数来选择。在建树过程中,如果一些样本很快就到达了叶子节点(即叶子到根的距离d很短),那么就被认为很有可能是异常点。因为那些路径d比较短的样本,都是因为距离主要的样本点分布中心比较远的。也就是说,可以通过计算样本在所有树中的平均路径长度来寻找异常点。

参考:
https://blog.csdn.net/ye1215172385/article/details/79762317
https://github.com/tushushu/imylu/blob/master/examples/isolation_forest_example.py

https://github.com/tushushu/imylu/blob/master/imylu/ensemble/isolation_forest.py

k-d树

k-d树(k-dimensional tree的简称),是一种分割k维数据空间的数据结构,它是用来计算 kNN 的一个非常常用的工具。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。是一个包含空间信息的二项树数据结构,如果特征的维度是 DD,样本的数量是 NN,那么一般来讲 kd 树算法的复杂度是 O(DlogN)O(Dlog⁡N),相比于穷算的 O(DN)O(DN) 省去了非常多的计算量。
https://www.joinquant.com/post/2627
https://zhuanlan.zhihu.com/p/23966698

https://github.com/tushushu/imylu/blob/master/imylu/utils.py
https://github.com/tushushu/imylu/blob/master/imylu/neighbors/kd_tree.py

什么是 “图”?:https://mp.weixin.qq.com/s/FGwRyNAIr1VFzcV4IUOgSA
数据结构与算法——图论基础与图存储结构:https://mp.weixin.qq.com/s/EjO9CwwDsYxU3uUDno8lHA


Max Heap最大堆(大顶堆)

最大堆是指最大的元素在堆顶的堆。

https://blog.csdn.net/yuhentian/article/details/80159284
https://mp.weixin.qq.com/s/Rkqlfld44hvL0mjra44zNA
https://github.com/tushushu/imylu/blob/master/imylu/neighbors/max_heap.py
https://github.com/tushushu/imylu/blob/master/examples/max_heap_example.py

窗口最大值数组

https://mp.weixin.qq.com/s/u5Bmxf3L0FLtPBokw78jJQ


RandomForest(随机森林)

理解随机森林:基于Python的实现和解释Jupyter Notebook

https://blog.csdn.net/qq547276542/article/details/78304454

https://github.com/tushushu/imylu/blob/master/imylu/ensemble/random_forest.py

Linear Regression(线性回归)

https://blog.csdn.net/july_sun/article/details/53223962
https://blog.csdn.net/u011775523/article/details/52758734
拒绝调包,如何用python推导线性回归模型:https://mp.weixin.qq.com/s/c2PaD43d3p8iWVwLRW6Ppw

https://github.com/tushushu/imylu/blob/master/imylu/linear_model/linear_regression.py

Logistic Regression(逻辑回归)

https://blog.csdn.net/programmer_wei/article/details/52072939
https://www.cnblogs.com/sparkwen/p/3441197.html

https://github.com/tushushu/imylu/blob/master/imylu/linear_model/logistic_regression.py

参考资料:
https://github.com/imhuay/Algorithm_Interview_Notes-Chinese/tree/master/%E7%AE%97%E6%B3%95


马拉车算法

如何找到字符串中的最长回文子串?
https://mp.weixin.qq.com/s/Zrj35DrnQKtAENiR5llrcw


算法面试中经常问的「字符串」问题

https://mp.weixin.qq.com/s/4Pci2an1HJ-8CRQJpWp7oQ



推荐系统

推荐学习推荐系统:https://mp.weixin.qq.com/s/taG6qiubQyTfBYoFwI48Kg
推荐系统的评估:https://mp.weixin.qq.com/s/bc7H8IXC6muPff2ftAKEXA
【RS】协同过滤-基础篇:https://mp.weixin.qq.com/s/cNw8Ao1Z23Q12YGyZacJ1Q
【RS】协同过滤-user_based:https://mp.weixin.qq.com/s/eslW-NkCcGxyxLVO5YCLfg
【RS】协同过滤-item_based:https://mp.weixin.qq.com/s/8PpV4vypHU9i_5l2guZVbg
【RS】协同过滤-进阶篇:https://mp.weixin.qq.com/s/N21N7EYh4xXYSlc1KwEspw
浅谈冷启动(从无到有的那种):https://mp.weixin.qq.com/s/fkpGvtbAOPe7s5OY-jbi1g
RS | 推荐系统整体设计:https://mp.weixin.qq.com/s/nmt-com18jPhii_kH7UGGQ
RS | 深度讨论FM和FFM:不仅是推荐:https://mp.weixin.qq.com/s/6A27mq2omC4YfVBY5i1BEg
RS | 论文阅读:用于YouTube推荐的深度神经网络:https://mp.weixin.qq.com/s/Jy3Pu-8ytkQQt5hNSKFC8w
R&S | 爱奇艺搜索启发:https://mp.weixin.qq.com/s/KWoUMSjxDyMq_9fiSa-DBA
手把手搞推荐[0]:我的推荐入门小结:https://mp.weixin.qq.com/s/wXFNuGi26g7RhBLBI2JPeA
手把手搞推荐[1]:数据探索:https://mp.weixin.qq.com/s/0cl0H4ovfFbf16MkEq2Vew
手把手搞推荐[2]:特征工程指南:https://mp.weixin.qq.com/s/ONl6icQEEKyN4m79rt_UEA
R&S | 手把手搞推荐[3]:数据集存取思路:https://mp.weixin.qq.com/s/6XJjvnsNCtFk-r__AcvnGQ
转 | 数据集存取新方案-认识feature hashing:https://mp.weixin.qq.com/s/QnXQ6pGG4NAV6N4oAfg03A
R&S | 手把手搞推荐[4]:打分预估模型:https://mp.weixin.qq.com/s/_OuyUudmqBfbmWBStux40g
评价指标设计:https://mp.weixin.qq.com/s/LFbOgTZBDjs2EjPg1iUkwg
做算法?数学专业的我教你突破数学关:https://mp.weixin.qq.com/s/yzkwSdoPRK1-JZIgJncHLg


酒店推荐系统

一文带你搭建简单的酒店推荐系统:https://mp.weixin.qq.com/s/Q_YGJnYGslKoYskPr0YOtg
Github:https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Hotel%20recommendation.ipynb


电影推荐系统

【RS】协同过滤-user_based(基于用户的协同过滤)

https://mp.weixin.qq.com/s/eslW-NkCcGxyxLVO5YCLfg
https://gitee.com/chashaozgr/noteLibrary/blob/master/rs/src/CF/user_CF.py

RS】协同过滤-item_based(基于物品的协同过滤)

https://mp.weixin.qq.com/s/8PpV4vypHU9i_5l2guZVbg
https://gitee.com/chashaozgr/noteLibrary/blob/master/rs/src/CF/item_CF.py


商城推荐系统



算法优化

一些常用的算法技巧总结

https://mp.weixin.qq.com/s/oncH5ya-J6vH-Yn66kFFhw

分享一道解法巧妙的算法题

https://mp.weixin.qq.com/s/zg942X_6WdBtsVcnTPkguQ

如何实现可以获取最小值的栈?(栈)

https://mp.weixin.qq.com/s/SFbGNAEGnqZMib9VMC26Ew

最小堆

https://mp.weixin.qq.com/s/kXbDUQfhzgvSa94z0cddog

如何用栈实现队列?

https://mp.weixin.qq.com/s/IiOUgS5jZ6pgVqUAJHwNKg

如何编程解决华容道问题?(深搜、广搜、回溯)

https://mp.weixin.qq.com/s/b9E3oVZfLIGAgkeHQiu2Mw

Python可视化优先算法:走迷宫

https://mp.weixin.qq.com/s/qXl12ns-EdYwq29ubtV48g

为什么要分稳定排序和非稳定排序?(排序)

https://mp.weixin.qq.com/s/GiNFE1dwmVtA99qxccK3aQ

如何判断一个数是否在40亿个整数中?(位图法(bitmap)、大数据算法)

https://mp.weixin.qq.com/s/M-9OXISosrqRI08QIDJiPA

如何实现大整数相加?

https://mp.weixin.qq.com/s/GXclPfm_L2kIGAjgLSPX5g

如何实现大整数相乘?

https://mp.weixin.qq.com/s/cfChrGDIdj5qMk-vVv-6hQ

寻找无序数组的第k大元素

https://mp.weixin.qq.com/s/1Y6yLuErGhDE0bA_M8mEjg

Python可视化排序算法

https://mp.weixin.qq.com/s/rgowVkny0wWKMbWlZiA2ig

单源最短路径算法 Dijkstra 优化

https://mp.weixin.qq.com/s/ALQntqQJkdWf4RbPaGOOhg

五分钟学算法

谁是最后的赢家(红包游戏):https://mp.weixin.qq.com/s/sRYNX4DXepRw2G_wpzIdtw
神奇的二进制:https://mp.weixin.qq.com/s/zVRy1D6LNiP9HbEXfrqp-A
三门问题:https://mp.weixin.qq.com/s/tUr-XGPG6M9DWXXb_i5yWg
弹珠抽奖游戏概率:https://mp.weixin.qq.com/s/ZrrOzIup9rm7zhBFHFlpaQ
24点游戏:https://mp.weixin.qq.com/s/dVnq497l5241Mz_rFIvJcA
斐波那契数列的黄金分割:https://mp.weixin.qq.com/s/_41JAYVV4kWxYLBYaCsksg
2-3-4树:https://mp.weixin.qq.com/s/ZItUJ0UNfEJir6-z7i_r-g
有趣的霍夫曼编码:https://mp.weixin.qq.com/s/7OGeMjFEwwlybYtaJDwL_g
链表算法面试问题?:https://mp.weixin.qq.com/s/1bzwER-LOB6a4HLkDbi8bQ
算法面试经常需要你手写的三个排序算法:https://mp.weixin.qq.com/s/mHLUSa0ut-a_n7e9GAFkRQ
布隆过滤器:https://mp.weixin.qq.com/s/QxKshmR75RBmYQkz4eU9dg
浅谈什么是分治算法:https://mp.weixin.qq.com/s/paOrlfpdMwvCUDywda0EvQ
我会写二分查找法!对,没有 bug 的那种!:https://mp.weixin.qq.com/s/b9Yu23zUrgtitnSp_tg3QQ


算法练习、答题、考试

力扣(LeetCode):https://leetcode-cn.com/


算法可视化

这个开源项目让算法真的动了起来:https://mp.weixin.qq.com/s/VizBTswat-8oNCi0kC_l1Q

(●゚ω゚●)