注意!所有没有直接贴出代码的都是未验证或未弄懂的。
大部分是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
常见几种加密算法
常见几种加密算法的Python实现:https://mp.weixin.qq.com/s/rnPzHjAIxtKlS5Mc8HOlAw
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(DlogN),相比于穷算的 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://github.com/heucoder/dimensionality_reduction_alo_codes
图
什么是 “图”?: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
**R&S | 手把手搞推荐[6]:回顾整体建模过程:**https://mp.weixin.qq.com/s/6E4NAWaOg7fXNCM4V1x5-Q
**SIGIR2018:深度学习匹配在搜索与推荐中的应用:**https://mp.weixin.qq.com/s/7_RjBNH5prG5Yhgwzbawqw
R&S[25] | 搜索中的意图识别:https://mp.weixin.qq.com/s/u5YfKg2YXwUGs1WkWx5eog
**推荐系统入门经验:**https://mp.weixin.qq.com/s/IcoT9dqo8ieyoTapaUGqfg
酒店推荐系统
一文带你搭建简单的酒店推荐系统: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
商城推荐系统
ElasticRec
ElasticRec是基于Kubernetes的企业级推荐系统解决方案,该方案融合了百度业务场景下经过不断验证打磨的CTR模型、基于飞桨框架的大规模分布式训练、工业级稀疏参数Serving组件,帮助用户在Kubernetes环境中一键完成推荐系统架构部署,快速搭建和验证CTR模型训练和预测效果,具备高性能、工业级部署、端到端体验及二次深度开发的特性。
https://github.com/PaddlePaddle/ElasticRec
算法优化
一些常用的算法技巧总结
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
启发式算法
Python 7种启发式算法库scikit-opt:https://scikit-opt.github.io/scikit-opt/#/zh/README?id=%e5%ae%89%e8%a3%85
五分钟学算法
**谁是最后的赢家(红包游戏):**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
漫画算法
5分钟搞明白红黑树到底是什么?https://mp.weixin.qq.com/s/lQ7SQAsNRGm0-lyMDHvXTg
史上最简(详细)KMP算法讲解,看不懂算我输!:https://mp.weixin.qq.com/s/8eA7rYMGXWqVjv6SFOmOQg
漫画:什么是希尔排序?:https://mp.weixin.qq.com/s/b9-dkpAhWJYshuSs5cwnOw
算法练习、答题、考试
力扣(LeetCode):https://leetcode-cn.com/
算法可视化
这个开源项目让算法真的动了起来:https://mp.weixin.qq.com/s/VizBTswat-8oNCi0kC_l1Q
综合、数学
一文囊括李航《统计学习方法》几乎所有的知识点!:https://mp.weixin.qq.com/s/rguWJpxxNcfmEwmUw8zcnQ
评论区