该文章主要是学习数据结构(链表、栈、哈希表、树、图)和算法(排序算法、程序员常用10大算法),针对每个结构都有一个小case测试验证。
数据结构
链表
一种数据结构,包括单向链表、双向链表、单向环形链表
单向链表
1 | /** |
双向链表
1 | /** |
单向环形链表(约瑟夫问题)
1 | /** |
栈
数组模拟栈
1 | /** |
实现统合计数器
1 | /** |
递归
打印、阶乘问题
1 | /** |
迷宫
1 | /** |
八皇后
1 | /** |
排序算法
冒泡排序
1 | /** |
选择排序
1 | /** |
插入排序
1 | /** |
希尔排序(plus版插入排序)
1 | /** |
快速排序(plus版冒泡排序)
1 | /** |
归并排序
1 | /** |
基数排序(桶排序)
1 | /** |
小结
(1)速度方面:桶排序、快速排序、希尔排序、插入排序、选择排序、冒泡排序
(2)归并排序需要一个arr[length]的额外数组
(3)基数排序需要一个arr[10][length]的二维数组
查找算法
二分查找
1 | /** |
插值查找
1 | /** |
斐波那契算法(黄金分割算法)
1 | /** |
哈希表
简单的员工添加、查询
1 | /** |
树
树结构基础部分
二叉树
1 | /** |
顺序二叉树
1 | /** |
线索化二叉树
1 | /** |
实际应用
堆排序
1 | /** |
赫夫曼编码(数据压缩)
1 | /** |
二叉排序树
1 | /** |
平衡树(AVL树)
1 | /** |
多路查找树
描述:包括二叉树与B树、2-3树、B树、B+树和B*树
代码:暂无
图
创建图
1 | /** |
深度优先算法
1 | /** |
广度优先算法
1 | // 广度优先 |
算法
程序员常用10大算法
二分查找算法(非递归)
1 | /** |
分治算法
1 | /** |
动态规划算法
1 | /** |
KMP算法
1 | /** |
贪心算法
1 | /** |
普利姆算法
1 | /** |
克鲁斯卡尔算法
1 | /** |
迪杰斯特拉算法
1 | /** |
弗洛伊德算法
1 | /** |
马踏棋盘算法
1 | /** |