2021年最新总结500个常用数据结构,算法,算法导论,面试常用,经典游戏,大厂高级工程师总结
1800道数据结构和算法题(含答案)
🦈 数据结构和算法
〽 线性结构
数组行优先顺序
数组列优先顺序
广义表
单向链表:初始化,添加,长度,判空,清空,获取结点,插入结点,删除结点
双向链表:初始化,获得头结点,获得尾结点, 插入结点,删除结点
循环链表
静态栈:初始化,进栈,出栈
动态栈:初始化,进栈,出栈
顺序队列
循环队列
链式队列
🌴 树形结构
二叉树:创建二叉树,插入树结点,前序遍历,中序遍历,后续遍历,二叉树深度,叶结点个数
平衡二叉树(AVL树)
二叉查找树(BST)
完全二叉树
伸展树
LSM 树
哈夫曼树
2-3-4树
红黑树:左旋,右旋,添加结点,删除结点,后继结点,查找
B树
B+树:创建b+树,插入结点,删除结点,合并结点,分裂结点,查询,遍历
B*树
决策树
并查集
❄ 堆
二叉堆
左倾堆
斜堆
二项堆
斐波那契堆
📊 图
有向图
无向图
无权图
带权图
完全图
深度优先搜索
广度优先搜索
迭代加深搜索(ID搜索)
约束满足搜索
爬山算法
模拟退火算法
⚜ 排序算法
算法复杂度
排序算法 | 平均情况 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定与否 |
---|---|---|---|---|---|
冒泡排序 | O(n2) | O(n2) | O(n2) | 1 | 稳定 |
选择排序 | O(n2) | O(n2) | O(n2) | 1 | 不稳定 |
插入排序 | O(n2) | O(n) | O(n) | 1 | 稳定 |
希尔排序 | O(nlogn) | 依赖增量序列 | 依赖增量序列 | 1 | 不稳定 |
快速排列 | O(nlogn) | O(nlogn) | O(n2) | O(logn) | 不稳定 |
归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
二叉树排序 | O(nlogn) | O(nlogn) | O(n2) | O(n) | 稳定 |
计数排序 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 稳定 |
桶排序 | O(n+k) | O(n2) | O(n) | O(n+k) | 稳定 |
堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | 1 | 不稳定 |
拓扑排序 | O(N+E) | - | - | O(n) | - |
算法动图演示
算法动图演示请看
冒泡排序
插入排序
希尔排序
选择排序
堆排序
归并排序
桶排序
基数排序
二叉树排序
计数排序
快速排序1
快速排序2
快速排序3
拓扑排序
💫 查找算法
线性查找
顺序查找
二分查找
插值查找
斐波那契查找
树表查找
分块查找
哈希查找
⭕ 搜寻算法
二分搜寻法
循序搜寻法
插补搜寻法
费氏搜寻法
🔱 推荐算法
协同过滤推荐算法
基于内容的推荐算法
混合推荐算法
流行度推荐算法
❇ 矩阵
对称矩阵
对角矩阵
稀疏矩阵
邻接矩阵
稠密矩阵
三角矩阵
多维矩阵转一维矩阵
矩阵连乘 动态规划迭代实现
矩阵连乘 备忘录递归实现
➰ 项目中常用算法
产生可能的集合
后序式
格雷码
完美数
得分排行
数字拆解
筛选求质数
阿姆斯壮数
重叠子问题的递归最优解
长PI
大数运算
最大m子段问题
最大子段和问题的简单算法
最大访客数
最长公共子序列问题
最小生成树
最短路径算法
➿ 大厂必会算法
排列组合
乱数排列
费列数列
布隆过滤器
RSA加密算法
回溯算法
递归算法
分治算法
贪心算法
KMP算法
剪枝算法
滑动窗口算法
朴素贝叶斯算法
动态规划算法
🎡 C++项目
💧 经典算法
背包问题
河内之塔
生命游戏
八枚银币
八皇后
三色棋
骑士走棋盘
老鼠走迷宫1
老鼠走迷宫2
魔方阵1
魔方阵2
魔方阵3
💤 实战项目
实现太阳系行星系统
实现运动目标的追踪
实现银行排队服务模拟
1小时入门增强现实技术
代码实现线程池
开发 Web 服务框架
打造 Markdown 解析器
实现高性能内存池
实现简易 Docker 容器
实现内存泄露检查器
使用 Crypto++ 库实现常用的加密算法
实现高性能 RTTI 库
操作 redis 实现异步订阅和发布
实现基数树 radix tree
基于OpenCV实现实时监控和运动检测记录
🏮 经典项目
递归解决分鱼问题
递归解决年龄问题
马踏棋盘
在字符串的指定位置插入字符
删除星号
魔方阵
矩阵转置
农夫过河
平分7筐鱼
邮票组合
选美比赛
掷骰子游戏
狼追兔子问题
24点问题
常胜将军问题
自动发牌程序
黑白子交换
“抢30”游戏
搬山游戏
人机猜数问题
谜语博士的难题
黑与白问题
谁是窃贼问题
旅客国籍问题
委派任务问题
谁在说谎问题
新良和新娘问题
谁家孩子跑的最慢问题
求梅森素数
求孪生素数
求回文素数
要发就发(1898)问题
验证哥德巴赫猜想
求给定范围内的所有素数
计算分数的精确值
求多项式之和
比较两个分数的大小
将真分数分解为埃及分数
求最小公倍数
歌星大奖赛
列出真分数序列
求最大公约数
求不重复的3位数
求勾股数
求黑洞数
求高次方数的尾数
求回文数
水仙花数
求自守数
求亲密数
求完数
换分币问题
马克思手稿中的数学题
舍罕王的失算
猜牌术
爱因斯坦的数学题
求车速
出售金鱼问题
三色球问题
分糖果问题
数制转换
存钱问题
个人所得税问题
最佳存款方案
牛顿失代法求方程根
兔子产子问题
抓交通肇事犯问题
打鱼还是晒网问题
借书方案知多少
百钱百鸡问题
动态数组的实现
实现的猜拳游戏(剪子锤子布)
定时关机程序
统计文件中的字符数、单词数以及总行数
统计输入的字符串的长度
输出菱形
统计英文字母、空格、数字和其它字符的数目
将一个正整数分解质因数
统计文件中单词的个数
向文件写入内容并读取显示
判断一个数是否是素数
输出2的N次幂
猴子吃桃问题
求某一年的某一月有多少天问题
求nt的值(3种方法)
删除字符数组中特定的字符
判断回文字符串
打印杨辉三角
数组旋转问题
新娘和新郎问题
兔子生兔子的问题
获取开机时间
分别用递归法和迭代法求阶乘
奶牛生子的问题
计算用1分钱、2分钱、5分钱组成1元钱的方式
将字符串转换为整数
计算厄密多项式
计算一个数的平方根
实现动态数组,克服静态数组大小固定的缺陷
实现文本搜索,类似软件中常用的搜索功能
动态分配数组大小
定时关机小程序
文本文件复制代码
线性同余法产生随机数
计算你收藏的硬币值多少钱
找到一个数的所有真因子
UDP传输系统源码
万年历源码
五子棋源码
做的一个任务管理器
做的播放器源码
做的绘图板系统
别踩白块儿(双人版)源码
力学相关的流体源码
华容道源码
吃逗游戏源码
商品销售系统源码
图书借阅系统源码
图书管理系统源码
地空对战游戏
坑爹大冒险
坦克游戏源代码
大丰收游戏源码
奔跑的火柴人游戏源码
学生信息系统
学生成绩管理系统
学生成绩管理系统源码
实现图片转化为 ASCII 图
实现如果cmd中的ping
实现数字雨
实现水波纹显示效果
实现的汉诺塔演示程序
实现的象棋源码
实现的超级玛丽游戏源码
实现类似弹力球效果
实现非常漂亮祝福烟花效果
对对碰游戏源码
对自己电脑系统测试
情人节的红玫瑰
打字母游戏源码
打字游戏代码
扔香蕉的大猩猩
拼图游戏源码
支持自己创建迷宫,并求解最短路径
教工工资管理系统
文本编辑器系统源码
涂格子游戏源码
火车票订票管理源码
电子时钟程序
盒子接球游戏源码
矿井逃生
种地要浇水游戏源码
自创军旗游戏源码
自创推箱子游戏改版
贪吃蛇游戏的双人对战版
超市管理系统
连连看游戏源码
通讯录管理系统源码
配有图片和音乐的打字母游戏
青蛙过河小游戏
黑白棋ai游戏源码
迷宫源码
🧲 经典游戏
MiGo开源掌机
2048游戏
21点游戏
game-of-life
snake_game
中国象棋
五子棋
井字棋
俄罗斯方块
弹弹乐
弹球游戏
成语接龙
打砖块游戏
打飞机游戏
扫雷游戏
推箱子
文字冒险游戏
猜拳游戏
猜数游戏
皇帝和后宫
老虎机游戏
记忆游戏
贪吃蛇(穿墙)
贪吃蛇
💿 视频讲解游戏
火柴人试炼之地
雷霆战机
奇怪大冒险
气球塔防
太空大战
📒 附录
📃 附录1
算法动图显示
冒泡排序
插入排序
希尔排序
选择排序
堆排序
归并排序
桶排序
基数排序
计数排序
快速排序
拓扑排序
拓扑排序步骤:
🤝 鸣谢
为了让我们的repo内容更加的丰富,更加的专业。欢迎大家贡献patch,希望大家在issue里面出谋划策,我们期待你的加入。
联系专栏
每天晚上8点【免费技术直播】:分享Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习。