Skip to content

doocs/data-structure-and-algorithm

Repository files navigation

必知必会:数据结构与算法

java-ci prs-welcome doocs-open-source-organization gitter

Algorithms + Data Structures = Programs, — Niklaus Wirth

目前来说,程序员的面试门槛越来越高,很多一线互联网公司的技术面试,都或多或少会考察数据结构与算法相关的题目,掌握数据结构与算法尤为重要。如果你不想永远做一名“代码搬运工”,那就花点时间一起来学习吧。本项目涵盖数据结构与算法所有知识点,内容将在后续不断更新,欢迎持续关注项目最新动态。

数据结构的划分

稀疏矩阵和队列

堆栈

队列

链表

链表介绍

单链表应用实例

单链表大厂面试题

双向链表应用实例

单向环形链表应用场景

单向环形链表介绍

约瑟夫问题

栈的一个实际需求

栈的介绍

栈的应用场景

栈的快速入门

栈实现综合计算器

逆波兰计算器

中缀表达式转换为后缀表达式

递归

递归与递归调用机制

递归-迷宫问题

递归-八皇后问题(回溯算法)

排序算法

排序算法介绍

算法的时空复杂度

冒泡排序

选择排序

插入排序

希尔排序

快速排序

归并排序

基数排序

常用排序算法对比总结

查找算法

线性查找算法

二分查找算法

插值查找算法

斐波那契(黄金分割法)查找算法

哈希表

哈希表的基本介绍

Google 公司的一个上机题

树结构

二叉树

  • 为什么需求树这种数据结构
  • 二叉树遍历:前序、中序、后续
  • 二叉树查找与删除

顺序存储二叉树

  • 顺序存储二叉树的概念
  • 顺序存储二叉树的遍历
  • 顺序存储二叉树应用实例

线索化二叉树

  • 先看一个问题
  • 线索二叉树基本介绍
  • 线索二叉树应用案例
  • 遍历线索化二叉树

树结构应用

堆排序

赫夫曼树

赫夫曼编码

  • 数据压缩与解压
  • 文件压缩与解压

二叉排序树

平衡二叉树(AVL 树)

  • 左旋
  • 右旋
  • 双旋转

多路查找树

二叉树与 B 树

B 树、B+ 树和 B* 树

图基本介绍

图的表示方式

图的深度优先遍历

图的广度优先遍历

图的深度优先 VS 广度优先

10 大常用算法

二分查找算法(非递归)

分治算法

动态规划算法

KMP 算法

贪心算法

普里姆算法

克鲁斯卡尔算法

迪杰斯特拉算法

弗洛伊德算法

马踏棋盘算法