介绍
Java Data Structrue
简介
本项目为Java数据结构和算法学习笔记,主要作者 @guqing 一个Java界的小学生,并不是专业算法选手,希望有专业的小伙伴一起来改进。希望这个笔记能给你在学习算法的过程提供思路和源码方面的参考,全文大致按照数据结构/算法基本介绍,代码实现及测试,几道面试题三个部分来写。
笔记目录
线性结构和非线性结构
线性结构
非线性结构
稀疏数组(sparse array) 队列
数组循环队列
链表队列
最大优先队列
最小优先队列
索引优先队列
链表
单向链表
双向链表
单向循环链表
栈
代码实现
前缀、中缀、后缀表达式
递归
迷宫问题
八皇后问题(回溯法)
算法的时间复杂度
时间频度
时间复杂度
常见的时间复杂度
举例说明时间复杂度
平均时间复杂度和最坏时间复杂度
算法的空间复杂度
排序算法
冒泡排序
选择排序
插入排序
希尔排序
快速排序
归并排序
基数排序
查找算法
线性查找算法
二分查找
插值查找
斐波那契查找算法(黄金分割法)
哈希表 二叉树
为什么需要树
常用术语
二叉树概念
二叉树遍历
二叉查找树
查找和插入
有序性相关方法
排名
删除
范围查找
遍历
测试
平衡查找树
概念
四种不平衡范型
创建树的基本结构
左旋
右旋
双旋
增删查
红黑树
红黑树操作图解
红黑树代码实现
插入方法
查找方法
删除
范围查询
哈夫曼树
哈夫曼树创建思路图解
代码实现
哈夫曼编码
代码实现
多路查找树
2-3树
B树
代码实现
图
概念
图的表示方式
图的深度优先遍历
图的广度优先遍历
书籍推荐
《算法 第四版》(推荐,豆瓣评分 9.3,0.4K+人评价):Java 语言描述,算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。书的内容非常多,可以说是 Java 程序员的必备书籍之一了。
《算法图解》(推荐,豆瓣评分 8.4,0.6K+人评价):入门类型的书籍,读起来比较浅显易懂,适合没有算法基础或者说算法没学好的小伙伴用来入门。示例丰富,图文并茂,以让人容易理解的方式阐释了算法.读起来比较快,内容不枯燥!
《C算法》(推荐,豆瓣评分 8.0,48人评价:入门类型的书籍,阐述内容清楚、详尽、易懂与《算法第四版》是同一作者,介绍了当今最重要的算法,共分2卷,《C算法(第一卷):基础、数据结构、排序和摸索》,《算法(第二卷:图算法)》。书中提供了用C语言描述的完整算法源程序,并且配有丰富的插图和练习。
订阅更新
本项目托管在 https://github.com/guqing/datastructure 你可以在 GitHub
中 star 该项目查看更新。
许可证
本作品采用 MIT许可证 进行许可。传播此文档时请注意遵循以上许可协议。 关于本许可证的更多详情可参考 https://www.mit-license.org/
本着参与比主导更重要的开源精神,我将自己的数据结构与算法学习笔记公开和小伙伴们讨论,希望高手们不吝赐教。
如何贡献
如果你发现任何有错误的地方或是想更新/翻译本文档,请给我提issues或pull request
Last updated