赞
踩
该存储库是用 C++ 实现并根据MIT License获得许可的各种算法的开源实现的集合。
算法下载:
http://www.gitpp.com/peedan/cpp-dpqq
这些算法涵盖计算机科学、数学和统计学、数据科学、机器学习、工程等各种主题。其实现和相关文档旨在为教育工作者和学生提供学习资源。因此,人们可能会发现针对同一目标的不止一种实现,但使用不同的算法策略和优化。
该存储库以最基本的通用语言之一 - C++提供了各种算法的实现。
详细记录的源代码和详细的解释为教育工作者和学生提供了宝贵的资源。
每个源代码都是使用STL 类的原子代码,编译和执行不需要外部库。因此,可以更深入地研究算法的基础知识。
分别使用 MSVC 19 2022、AppleClang 14.0.0 和 GNU 11.3.0 在三个主要操作系统(即 Windows、MacOS 和 Ubuntu (Linux))的最新版本上编译和测试源代码。
严格遵守C++11标准可确保代码无需任何更改即可移植到嵌入式系统以及 ESP32、ARM Cortex 等。
程序内的自检可确保正确实施并充满信心。
模块化实现和开源许可使这些功能可以在其他应用程序中方便地使用。
生成括号
图形着色
骑士之旅
魔法序列
极小极大
北皇后区
N Queens 所有解决方案优化
Nqueen 打印所有解决方案
老鼠迷宫
子数组和
子集和
数独求解器
通配符匹配
计数翻转位
设置位数
阶乘 N 中的尾随密码计数
查找不重复的号码
汉明距离
具有相同设置位数的下一个更高的数字
2 的幂
设置第 K 位
使用位操作的旅行商
A1Z26 密码
阿特巴什密码
Base64 编码
凯撒密码
椭圆曲线密钥交换
希尔密码
摩尔斯电码
Uint128 T
Uint256 T
维吉尼亚密码
异或密码
Fcfs调度
阿维特里
二叉搜索树
二叉搜索树2
二叉堆
布隆过滤器
使用链表的循环队列
氯
氯
氯
主室
不相交集
双向链表
Dsu 路径压缩
DSU联盟排名
链表
使用数组实现链表
列表数组
莫里森顺序
节点
队列
使用数组进行队列
使用 Array2 进行队列
使用链表进行队列
使用链表进行队列
使用两个堆栈的队列
铷树
反转链表
线段树
跳过列表
稀疏表
堆
使用数组的堆栈
使用链表进行堆栈
使用队列的堆栈
测试队列
测试堆栈
测试堆栈学生
特雷普
树
树 234
现代特里
特里树
使用 Hashmap 的 Trie
快速乘法的 Karatsuba 算法
施特拉森矩阵乘法
0 1 背包
缩写
阿姆斯特朗数
贝尔曼·福特
加泰罗尼亚语号码
硬币找零
硬币找零自上而下
切棒
编辑距离
鸡蛋掉落拼图
斐波那契自下而上
弗洛伊德·沃歇尔
入室抢劫者
卡丹
卡丹2
最长公共字符串
最长公共子序列
最长递增子序列
最长递增子序列 (Nlogn)
最长回文子序列
矩阵链乘法
最大循环子数组
最小编辑距离
回文分区
分区问题
动态数组中元素的搜索
最短公共超序列
子集和
树高
断词
记忆游戏
格雷厄姆扫描算法
格雷厄姆扫描函数
贾维斯算法
线段交点
双向迪杰斯特拉
广度优先搜索
使用 Tarjan 算法寻找桥梁
连接组件
使用 Dsu 连接组件
循环检查有向图
深度优先搜索
使用堆栈进行深度优先搜索
迪克斯特拉
汉密尔顿循环
霍普克罗夫特·卡普
图是二分图吗
图是二分图吗2
科萨拉茹
克鲁斯卡尔
最低共同祖先
Max Flow 与 Ford Fulkerson 和 Edmond Karp Algo
普里姆
拓扑排序
Kahns 算法的拓扑排序
旅行商问题
螺旋描记器
Boruvkas 最小生成树
迪克斯特拉
霍夫曼
跳跃游戏
背包
Kruskals最小生成树
Prims 最小生成树
链接
双哈希哈希表
线性探测哈希表
MD5
二次探测哈希表
沙1
沙256
明星搜索
阿达琳学习
K 最近邻
Kohonen Som 拓扑
科霍宁·索姆·跟踪
神经网络
普通最小二乘回归器
矢量行动
等分总和
近似圆周率
区域
阿姆斯特朗数
二进制指数
二项式计算
检查友好配对
检查阶乘
检查总理
复数
双阶乘
埃拉托色尼
欧拉函数
扩展欧几里得算法
阶乘
快速供电
斐波那契
斐波那契快速
斐波那契大数
斐波那契矩阵求幂
斐波那契和
查找数字中的位数
Gcd 迭代欧几里得
N 个数字的 Gcd
Gcd 递归欧几里得
积分近似
积分近似2
倒数平方
迭代阶乘
大阶乘
大数字
最大功率
总和
最小公倍数
线性递归矩阵
神奇数字
米勒·拉宾
模块化事业部
模幂
模逆费马小定理
模块化逆简单
N博纳奇
N 选择 R
Ncr 模 P
正除数的数量
周长
为大数据提供动力
二的幂
质因数分解
质数
质数高达十亿
二次方程复数
实时统计
埃拉托斯特尼筛法
平方双
斐波那契字符串
二项式系数之和
数字总和
向量叉积
体积
巴比伦方法
二分法
布伦特法极值
复合辛普森规则
杜兰德·克纳·鲁茨
错误位置
快速傅立叶变换
高斯消去法
黄金搜索极值
格拉姆·施密特
快速傅里叶逆变换
鲁分解
卢分解
中点积分法
牛顿拉夫逊法
欧拉前瞻颂
欧拉中点颂
颂半隐式欧拉
Qr 分解
Qr 分解
Qr 特征值
龙格库塔
逐次逼近
数组左旋转
数组右旋转
循环链表
使用数组的循环队列
获取链接列表的大小
Bst 的有序后继者
两个数组的交集
使用递归反转链表
反向二叉树
选择排序链表
尝试多重搜索
两个数组的并集
嗡嗡声号码
十进制转二进制
十进制到十六进制
十进制转罗马数字
复活节
快速整数输入
快乐数
迭代树遍历
卡达内斯3
开尔文 到 摄氏度
LRU缓存
矩阵求幂
回文数
括号匹配
帕斯卡三角
后缀评估
素性测试
递归树遍历
最小圆
稀疏矩阵
螺旋印花
楼梯图案
河内塔
矢量重要函数
地对地抛射运动
加法规则
贝叶斯定理
二项分布
几何距离
泊松区
窗口中位数
芬威克树
重光分解
莫
持久 Seg Tree Lazy Prop
前缀和数组
塞格特里
稀疏表
二分查找
指数搜索
斐波那契搜索
Floyd 循环检测算法
哈希搜索
插值搜索
插值搜索2
跳转搜索
线性搜索
中值搜索
中值搜索2
马鞍峰搜索
子列表搜索
三元搜索
文本搜索
珠子排序
二元插入排序
双调排序
波戈排序
冒泡排序
桶排序
鸡尾酒选择排序
梳排序
计数反转
计数排序
计算排序字符串
循环排序
dnf排序
侏儒分类
堆排序
插入排序
图书馆排序
合并插入排序
归并排序
非递归归并排序
数字字符串排序
奇偶排序
煎饼排序
鸽巢排序
快速排序
快速排序3
基数排序
基数排序2
随机枢轴快速排序
递归冒泡排序
选择排序迭代
选择排序递归
希尔排序
希尔排序2
慢排序
傀儡排序
链排序
交换排序
蒂姆·索特
波浪排序
摆动排序
博耶·摩尔
暴力字符串搜索
霍斯普尔
高德纳·莫里斯·普拉特
马纳赫算法
拉宾·卡普
Z 功能
中国的互联网大厂赚的是广告的钱。
和其他软件公司不一样,软件公司赚的是技术钱,凭本事吃饭(很艰难)。
互联网大厂赚的是广告的钱还有游戏的钱,头条、腾讯、百度什么的。所以只有互联网大厂才能给员工百万年薪(因为赚钱容易),学计算机一定要去互联网大厂。算法是最核心的要求。为什么说算法能力是进入互联网大厂的核心能力?
提高算法能力是一个需要长期积累和不断实践的过程。以下是一些建议,可以帮助你提升算法能力:
刷题:解决算法问题最直接有效的方式就是刷题。可以选择在线刷题平台,如LeetCode、LintCode、HackerRank等,这些平台上有大量的算法题目,可以按照难度和主题进行筛选和练习。通过刷题,可以加深对各种算法和数据结构的理解,提高解决问题的能力和速度。
系统学习:掌握算法和数据结构的基本概念和原理是非常重要的。可以选择阅读经典的算法和数据结构教材,如《算法导论》、《数据结构与算法分析》等。同时,也可以参加相关的在线课程或培训,系统地学习算法的设计和分析方法。
参与竞赛:参加算法竞赛是锻炼算法能力的好方法。通过竞赛,可以接触到更高难度和更实际的算法问题,与其他优秀的算法爱好者交流和切磋。一些知名的算法竞赛包括ACM/ICPC、Google Code Jam、Facebook Hacker Cup等。
实际项目应用:将算法应用到实际项目中也是提高算法能力的有效途径。可以选择参与开源项目或自己动手做一些小项目,将所学的算法应用到实际问题中。通过实践,可以更好地理解算法的应用场景和限制,以及如何进行性能优化和调整。
阅读优秀代码:阅读优秀的算法代码可以学习到很多高级的算法思想和实现技巧。可以选择阅读一些开源项目或优秀算法库的源代码,理解其中的算法设计和实现方式。同时,也可以关注一些算法领域的博客或专栏,阅读专家们的算法分析和心得。
持续学习和总结:算法领域是一个不断发展和更新的领域,新的算法和技术不断涌现。因此,要保持持续学习的态度,关注最新的算法动态和发展趋势。同时,也要及时总结和反思自己的学习和实践经验,不断调整和改进自己的算法能力提升路径。
原文链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。