最全的数据结构和算法,不信过来看看有没有漏掉的
🦈 数据结构和算法
〽 线性结构
- 数组行优先顺序
- 数组列优先顺序
- 广义表
- 单向链表:初始化,添加,长度,判空,清空,获取结点,插入结点,删除结点
- 双向链表:初始化,获得头结点,获得尾结点, 插入结点,删除结点
- 循环链表
- 静态栈:初始化,进栈,出栈
- 动态栈:初始化,进栈,出栈
- 顺序队列
- 循环队列
- 链式队列
🌴 树形结构
- 二叉树:创建二叉树,插入树结点,前序遍历,中序遍历,后续遍历,二叉树深度,叶结点个数
- 平衡二叉树(AVL树)
- 二叉查找树(BST)
- 完全二叉树
- 伸展树
- LSM 树
- 哈夫曼树
- 2-3-4树
- 红黑树:左旋,右旋,添加结点,删除结点,后继结点,查找
- B树
- B+树:创建b+树,插入结点,删除结点,合并结点,分裂结点,查询,遍历
- B*树
- 并查集
❄ 堆
- 二叉堆
- 左倾堆
- 斜堆
- 二项堆
- 斐波那契堆
📊 图
- 有向图
- 无向图
- 无权图
- 带权图
- 完全图
- 深度优先搜索
- 广度优先搜索
- 宽度优先搜索
- 迭代加深搜索(ID搜索)
- 约束满足搜索
- 爬山算法
- 模拟退火算法
⚜ 排序算法
算法复杂度
排序算法 |- |- |- |- |-
:-------- |:-------|:-------|:-------|:-------|:-------
插入排序 |O(n2) |O(n2) |O(n) |O(1) |稳定
希尔排序 |O(n1.3) |O(n2) |O(n) |O(1) |不稳定
选择排序 |O(n2) |O(n2) |O(n2) |O(1) |不稳定
堆排序 |O(nlog2n)|O(nlog2n)|O(nlog2n)|O(1) |不稳定
冒泡排序 |O(n2) |O(n2) |O(n) |O(1) |稳定
快速排列 |O(nlog2n)|O(n2) |O(nlog2n)|O(nlog2n)|不稳定
归并排序 |O(nlog2n)|O(nlog2n)|O(nlog2n) |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(n*k) |O(n*k) |O(n*k) |O(n+k) |稳定
GitHub 地址:https://github.com/0voice/algorithm-structure
算法动图显示
- 冒泡排序
- 插入排序
- 希尔排序
- 选择排序
- 堆排序
- 归并排序
- 桶排序
- 基数排序
- 计数排序
- 快速排序1
- 快速排序2
- 快速排序3
拓扑排序
拓扑排序步骤:
删除1或2输出
删除2或3以及对应边
删除3或者4以及对应边
重复以上规则步骤
💫 查找算法
- 线性查找
- 顺序查找
- 二分查找
- 插值查找
- 斐波那契查找
- 树表查找
- 分块查找
- 哈希查找
⭕ 搜寻算法
- 二分搜寻法
- 循序搜寻法
- 插补搜寻法
- 费氏搜寻法
🔱 推荐算法
- 协同过滤推荐算法
- 基于内容的推荐算法
- 混合推荐算法
- 流行度推荐算法
❇ 矩阵
- 对称矩阵
- 对角矩阵
- 稀疏矩阵
- 稠密矩阵
- 三角矩阵
- 多维矩阵转一维矩阵
- 矩阵连乘 动态规划迭代实现
- 矩阵连乘 备忘录递归实现
➰ 项目中常用算法
- 产生可能的集合
- 后序式
- 格雷码
- 完美数
- 得分排行
- 数字拆解
- 筛选求质数
- 阿姆斯壮数
- 重叠子问题的递归最优解
- 长PI
- 大数运算
- 最大m子段问题
- 最大子段和问题的简单算法
- 最大访客数
- 最长公共子序列问题
- 最小生成树
- 最短路径算法
➿ 大厂必会算法
- 排列组合
- 乱数排列
- 费列数列
- 布隆过滤器
- RSA加密算法
- 回溯算法
- 递归算法
- 分治算法
- 贪心算法
- KMP算法
- 剪枝算法
- 滑动窗口算法
- 朴素贝叶斯算法
- 动态规划算法
🏮 经典项目
- 递归解决分鱼问题
- 递归解决年龄问题
- 马踏棋盘
- 在字符串的指定位置插入字符
- 删除星号
- 魔方阵
- 矩阵转置
- 农夫过河
- 平分7筐鱼
- 邮票组合
- 选美比赛
- 掷骰子游戏
- 狼追兔子问题
- 24点问题
- 常胜将军问题
- 自动发牌程序
- 黑白子交换
- “抢30”游戏
- 搬山游戏
- 人机猜数问题
- 谜语博士的难题
- 黑与白问题
- 谁是窃贼问题
- 旅客国籍问题
- 委派任务问题
- 谁在说谎问题
- 新良和新娘问题
- 谁家孩子跑的最慢问题
- 求梅森素数
- 求孪生素数
- 求回文素数
- 要发就发(1898)问题
- 验证哥德巴赫猜想
- 高合定点围内日勺有券麦父
- 计算分数的精确值
- 求多项式之和
- 比较两个分数的大小
- 真分赉汉分角军为绘及分委叉
- 求最小公倍数
- 歌星大奖赛
- 列出真分数序列
- 求最大公约数
- 求不重复的3位数
- 求勾股数
- 求黑洞数
- 求高次方数的尾数
- 求回文数
- 水仙花数
- 求自守数
- 求亲密数
- 求完数
- 换分币问题
- 马克思手稿中的数学题
- 舍罕王的失算
- 猜牌术
- 爱因斯坦的数学题
- 求车速
- 出售金鱼问题
- 三色球问题
- 分糖果问题
- 数制转换
- 存钱问题
- 个人所得税问题
- 最佳存款方案
- 牛顿失代法求方程根
- 兔子产子问题
- 抓交通肇事犯问题
- 打鱼还是晒网问题
- 借书方案知多少
- 百钱百鸡问题
- 百钱买百鸡问题
- 实现的猜拳游戏(剪子锤子布),让你与电脑对决
- 写的简单的定时关机程序
- 统计文件中的字符数、单词数以及总行数
- 统计输入的字符串的长度
- 输出菱形
- 统计英文字母、空格、数字和其它字符的数目
- 将一个正整数分解质因数
- 统计文件中单词的个数
- 向文件写入内容并读取显示
- 判断一个数是否是素数
- 输出2的N次幂
- 猴子吃桃问题
- 求某一年的某一月有多少天问题
- 求nt的值(3种方法)
- 删除字符数组中特定的字符
- 判断回文字符串
- 打印杨辉三角
- 数组旋转问题
- 输出九九乘法表(5种解法)
- 兔子生兔子的问题(3中解法)
- 获取开机时间
- 分别用递归法和迭代法求阶乘
- 奶牛生子的问题(腾讯面试题)
- 计算用1分钱、2分钱、5分钱组成1元钱的方式
- 新娘和新郎问题
- 统计输入的单词的个数
- strlenQ以NUL作为字符串结束标记,自定义一个字符串长度统计函数消除这个Bug
- 将字符串转换为整数
- 计算厄密多项式
- 计算一个数的平方根
- 实现动态数组,克服静态数组大小固定的缺陷
- 实现文本搜索,类似软件中常用的搜索功能
- 猜拳游戏
- 动态分配数组大小
- 定时关机小程序
- 带打字效果输出字符串
- 结构体简单应用范例
- 使用枚举输出一周中的每一天
- 文本文件复制代码
- 输入一行数据并统计其长度
- 线性同余法产生随机数
- UDP传输系统源码
- 万年历源码
- 五子棋源码
- 做的一个任务管理器
- 做的播放器源码
- 做的绘图板系统
- 别踩白块儿(双人版)源码
- 力学相关的流体源码
- 华容道源码
- 吃逗游戏源码
- 商品销售系统源码
- 图书借阅系统源码
- 图书管理系统源码
- 地空对战游戏
- 坑爹大冒险
- 坦克游戏源代码
- 大丰收游戏源码
- 奔跑的火柴人游戏源码
- 学生信息系统
- 学生成绩管理系统
- 学生成绩管理系统源码
- 实现图片转化为 ASCII 图
- 实现如果cmd中的ping
- 实现数字雨
- 实现水波纹显示效果
- 实现的汉诺塔演示程序
- 实现的象棋源码
- 实现的超级玛丽游戏源码
- 实现类似弹力球效果
- 实现非常漂亮祝福烟花效果
- 对对碰游戏源码
- 对自己电脑系统测试
- 情人节的红玫瑰
- 打字母游戏源码
- 打字游戏代码
- 扔香蕉的大猩猩
- 拼图游戏源码
- 支持自己创建迷宫,并求解最短路径
- 教工工资管理系统
- 文本编辑器系统源码
- 涂格子游戏源码
- 火车票订票管理源码
- 电子时钟程序
- 盒子接球游戏源码
- 矿井逃生
- 种地要浇水游戏源码
- 自创军旗游戏源码
- 自创推箱子游戏改版
- 贪吃蛇游戏的双人对战版
- 超市管理系统
- 连连看游戏源码
- 通讯录管理系统源码
- 配有图片和音乐的打字母游戏
- 青蛙过河小游戏
- 黑白棋ai游戏源码
- 迷宫源码
🧲 经典游戏
- MiGo开源掌机
- 2048游戏
- 21点游戏
- game-of-life
- snake_game
- 中国象棋
- 五子棋
- 井字棋
- 俄罗斯方块
- 弹弹乐
- 弹球游戏
- 成语接龙
- 打砖块游戏
- 打飞机游戏
- 扫雷游戏
- 推箱子
- 文字冒险游戏
- 猜拳游戏
- 猜数游戏
- 皇帝和后宫
- ***游戏
- 记忆游戏
- 贪吃蛇(穿墙)
- 贪吃蛇