# 介绍

Java Data Structrue

&#x20;**个人学习笔记及总结希望能给需要的人提供一个参考**\
&#x20;![GitHub last commit](https://img.shields.io/github/last-commit/guqing/datastructure) ![GitHub License](https://img.shields.io/badge/license-MIT-green) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/guqing/datastructure) ![GitHub language count](https://img.shields.io/github/languages/count/guqing/datastructure) ![Travis build](https://www.travis-ci.org/guqing/datastructure.svg?branch=master) ![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/guqing/datastructure/master) ![Github Author](https://img.shields.io/badge/Author-guqing-orange.svg)

## 简介

本项目为Java数据结构和算法学习笔记，主要作者 [@guqing](https://github.com/guqing) 一个Java界的小学生，并不是专业算法选手，希望有专业的小伙伴一起来改进。希望这个笔记能给你在学习算法的过程提供思路和源码方面的参考，全文大致按照数据结构/算法基本介绍，代码实现及测试，几道面试题三个部分来写。

## 笔记目录

[学习笔记](https://algorithm.guqing.xyz/)

[view on github page](https://guqing.github.io/datastructure/docs/algorithms.html)

**线性结构和非线性结构**

* 线性结构
* 非线性结构

**稀疏数组（sparse array）** **队列**

* 数组循环队列
* 链表队列
* 最大优先队列
* 最小优先队列
* 索引优先队列

**链表**

* 单向链表
* 双向链表
* 单向循环链表

**栈**

* 代码实现
* 前缀、中缀、后缀表达式

**递归**

* 迷宫问题
* 八皇后问题（回溯法）

**算法的时间复杂度**

* 时间频度
* 时间复杂度
* 常见的时间复杂度
* 举例说明时间复杂度
* 平均时间复杂度和最坏时间复杂度
* 算法的空间复杂度

**排序算法**

* 冒泡排序
* 选择排序
* 插入排序
* 希尔排序
* 快速排序
* 归并排序
* 基数排序

**查找算法**

* 线性查找算法
* 二分查找
* 插值查找
* 斐波那契查找算法(黄金分割法)

**哈希表** **二叉树**

* 为什么需要树
* 常用术语
* 二叉树概念
* 二叉树遍历
* 二叉查找树
* 查找和插入
* 有序性相关方法
* 排名
* 删除
* 范围查找
* 遍历
* 测试

**平衡查找树**

* 概念
* 四种不平衡范型
* 创建树的基本结构
* 左旋
* 右旋
* 双旋
* 增删查
* 红黑树
* 红黑树操作图解
* 红黑树代码实现
* 插入方法
* 查找方法
* 删除
* 范围查询

**哈夫曼树**

* 哈夫曼树创建思路图解
* 代码实现
* 哈夫曼编码
* 代码实现

**多路查找树**

* 2-3树
* B树
* 代码实现

**图**

* 概念
* 图的表示方式
* 图的深度优先遍历
* 图的广度优先遍历

## 书籍推荐

* [《算法 第四版》](https://book.douban.com/subject/10432347/)（推荐，豆瓣评分 9.3，0.4K+人评价）：Java 语言描述，算法领域经典的参考书，全面介绍了关于算法和数据结构的必备知识，并特别针对排序、搜索、图处理和字符串处理进行了论述。书的内容非常多，可以说是 Java 程序员的必备书籍之一了。
* [《算法图解》](https://book.douban.com/subject/26979890/)（推荐，豆瓣评分 8.4，0.6K+人评价）：入门类型的书籍，读起来比较浅显易懂，适合没有算法基础或者说算法没学好的小伙伴用来入门。示例丰富，图文并茂，以让人容易理解的方式阐释了算法.读起来比较快，内容不枯燥！
* 《C算法》（推荐，豆瓣评分 8.0，48人评价：入门类型的书籍,阐述内容清楚、详尽、易懂与[《算法第四版》](https://book.douban.com/subject/10432347/)是同一作者，介绍了当今最重要的算法，共分2卷，[《C算法(第一卷):基础、数据结构、排序和摸索》](https://book.douban.com/subject/1169844/)，[《算法(第二卷：图算法)》](https://book.douban.com/subject/1152528/)。书中提供了用C语言描述的完整算法源程序，并且配有丰富的插图和练习。

### 订阅更新

本项目托管在 <https://github.com/guqing/datastructure> 你可以在 `GitHub`中 star 该项目查看更新。

## 许可证

本作品采用 **MIT许可证** 进行许可。**传播此文档时请注意遵循以上许可协议。** 关于本许可证的更多详情可参考 <https://www.mit-license.org/>

本着参与比主导更重要的开源精神，我将自己的数据结构与算法学习笔记公开和小伙伴们讨论，希望高手们不吝赐教。

## 如何贡献

如果你发现任何有错误的地方或是想更新/翻译本文档，请给我提[issues](https://github.com/guqing/datastructure/issues)或[pull request](https://github.com/guqing/datastructure/pulls)
