[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
# Algorithms
数据结构和算法是良好的程序设计和高效代码的基础。如果你想要成为一个牛逼的程序员,那么掌握高效的数据结构和算法,是必须的技能。本课程的目标,是帮助广大程序员夯实数据结构和算法基础,提升抽象思维和编程能力。
本课程涉及的数据结构包括(但不限于):数组、链表、栈、队列和优先队列,并查集,二分搜索树,哈希表,AVL 树等。
本仓库包括课程的 PPT(包括文案讲稿),还有部分源代码。
本项目主要参考谷歌工程师 Wlliam Fiset 开源的[算法项目](https://github.com/williamfiset/Algorithms)。
# 课程大纲
| 章节 | 标题(+视频链接) | 内容 |
| :--- | :------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------: |
| 01 | [数据结构介绍](https://www.bilibili.com/video/BV1U5411W7x9?p=1) | 介绍什么是数据结构,为什么要学数据结构,还有什么是抽象数据类型。 |
| 02 | [算法复杂度](https://www.bilibili.com/video/BV1U5411W7x9?p=2) | 介绍算法复杂度和 Big-O 标记,并分析相关案例。 |
| 03 | [静态和动态数组](https://www.bilibili.com/video/BV1U5411W7x9?p=3) | 介绍数组概念,应用场景,支持的操作和复杂度,还有使用样例等。 |
| 04 | [实现动态数组](https://www.bilibili.com/video/BV1U5411W7x9?p=4) | 通过现场编程,演示如何基于静态数组实现动态数组。 |
| 05 | [单向和双向链表](https://www.bilibili.com/video/BV1U5411W7x9?p=5) | 介绍单向和双向链表,应用场景,术语,复杂度。演示如何插入和删除节点 |
| 06 | [实现双向链表](https://www.bilibili.com/video/BV1U5411W7x9?p=6) | 通过现场编程,演示如何实现双向链表。 |
| 07 | [栈 Stack](https://www.bilibili.com/video/BV1U5411W7x9?p=7) | 介绍什么是栈,栈有哪些使用场景,演示栈的操作,分析栈操作的复杂度。演示如何通过栈来解决括号匹配问题。演示汉诺塔游戏。 |
| 08 | [栈操作演示](https://www.bilibili.com/video/BV1U5411W7x9?p=8) | 通过 PPT 演示如何基于单向链表来实现栈。 |
| 09 | [实现栈(现场编程)](https://www.bilibili.com/video/BV1U5411W7x9?p=9) | 通过代码演示如何基于双向链表来实现栈。 |
| 10 | [队列 Queue](https://www.bilibili.com/video/BV1U5411W7x9?p=10) | 介绍什么是队列,队列的术语,队列有哪些使用场景,队列的操作演示,还有分析队列的操作复杂度。 |
| 11 | [队列操作演示(基于单向链表)](https://www.bilibili.com/video/BV1U5411W7x9?p=11) | 演示如何基于队列实现宽度优先搜索 BFS 算法,如何基于单向链表实现队列。 |
| 12 | [实现队列(现场编程)](https://www.bilibili.com/video/BV1U5411W7x9?p=12) | 现场编程演示如何基于双向链表来实现队列。 |
| 13 | [优先队列 PriorityQueue(穿插讲解堆 Heap)](https://www.bilibili.com/video/BV1U5411W7x9?p=13) | 介绍什么是优先队列 PQ,有哪些应用场景,演示 PQ 的主要操作,然后分析操作复杂度。中间穿插讲解堆 Heap。 |
| 14 | [将最小堆转换成最大堆](https://www.bilibili.com/video/BV1U5411W7x9?p=14) | 演示如何将最小堆(Min Heap)转换成最大堆(Max Heap),包括数值和字符串场景。 |
| 15 | [向二叉堆中添加元素](https://www.bilibili.com/video/BV1U5411W7x9?p=15) | 介绍二叉堆和完全二叉树,解释如何基于数组来实现二叉堆,演示如何向二叉堆中添加元素。 |
| 16 | [从二叉堆中移除元素](https://www.bilibili.com/video/BV1U5411W7x9?p=16) | 演示如何从二叉堆中移除元素,然后演示如何通过哈希表优化移除操作的复杂度。 |
| 17 | [实现二叉堆(现场编程)(上)](https://www.bilibili.com/video/BV1U5411W7x9?p=17) | 现场编程演示如何基于 ArrayList 实现二叉堆,并且采用 HashMap 对移除 Removal 操作进行优化。这是上半部分。 |
| 18 | [实现二叉堆(现场编程)(下)](https://www.bilibili.com/video/BV1U5411W7x9?p=18) | 现场编程演示如何基于 ArrayList 实现二叉堆,并且采用 HashMap 对移除 Removal 操作进行优化。这是下半部分。 |
| 19 | [并查集(Union Find)](https://www.bilibili.com/video/BV1U5411W7x9?p=19) | 介绍什么是并差集,应用场景,还有操作复杂度。 |
| 20 | [并查集应用~克努斯卡尔算法](https://www.bilibili.com/video/BV1U5411W7x9?p=20) | 演示并查集的应用~克努斯卡尔最小生成树算法。 |
| 21 | [查找和合并操作演示](https://www.bilibili.com/video/BV1U5411W7x9?p=21) | 演示并查集的查找和合并操作是如何工作的 |
| 22 | [并查集路径压缩](https://www.bilibili.com/video/BV1U5411W7x9?p=22) | 演示并查集的路径压缩是如何工作的 |
| 23 | [实现并查集(现场编程)](https://www.bilibili.com/video/BV1U5411W7x9?p=23) | 通过现场编程演示如何基于数据实现并查集 |
| 24 | [二叉搜索树(BST)](https://www.bilibili.com/video/BV1U5411W7x9?p=24) | 介绍什么是树,二叉树,和二叉搜索树。包括树的使用场景,二叉搜索树的操作复杂度。 |
| 25 | [向二叉搜索树中添加元素](https://www.bilibili.com/video/BV1U5411W7x9?p=25) | 演示如何向二叉搜索树中添加元素,评估添加操作的复杂度。 |
| 26 | [从二叉搜索树中移除元素](https://www.bilibili.com/video/BV1U5411W7x9?p=26) | 演示如何从二叉搜索树中移除元素,分四种情况。 |
| 27 | [从二叉搜索
没有合适的资源?快使用搜索试试~ 我知道了~
算法和数据结构项目.zip
共32个文件
java:15个
pptx:9个
pdf:4个
需积分: 1 0 下载量 109 浏览量
2024-01-01
21:15:59
上传
评论
收藏 12.5MB ZIP 举报
温馨提示
数据结构
资源推荐
资源详情
资源评论
收起资源包目录
算法和数据结构项目.zip (32个子文件)
fgsefgergj
pom.xml 703B
src
test
java
com
spring2go
algorithms
datastructures
dynamicarray
DynamicArrayTest.java 6KB
linkedlist
LinkedListTest.java 10KB
binarysearchtree
BinarySearchTreeTest.java 12KB
stack
StackTest.java 2KB
unionfind
UnionFindTest.java 7KB
queue
QueueTest.java 2KB
priorityqueue
BinaryHeapTest.java 9KB
main
java
com
spring2go
algorithms
datastructures
dynamicarray
DynamicArray.java 1KB
linkedlist
DoublyLinkedList.java 3KB
binarysearchtree
BinarySearchTree.java 3KB
TreeTraversalOrder.java 211B
stack
ListStack.java 1KB
unionfind
UnionFind.java 1KB
queue
LinkedQueue.java 1KB
priorityqueue
BinaryHeap.java 4KB
LICENSE 1KB
slides
datastructures
hashtable
hashtable.pptx 1.15MB
linked_list
LinkedLists.pptx 383KB
LinkedLists.pdf 2.67MB
binarysearchtree
BinaryTrees.pptx 1.37MB
stack
Stack.pdf 4.79MB
Stack.pptx 395KB
unionfind
UnionFind.pptx 834KB
queue
Queue.pptx 299KB
dynamic_array
Arrays.pptx 141KB
Arrays.pdf 953KB
priorityqueue
PriorityQueue.pptx 875KB
introduction
ds_intro_slides.pdf 1.29MB
ds_intro_slides.pptx 154KB
.gitignore 141B
README.md 9KB
共 32 条
- 1
资源评论
zero2100
- 粉丝: 166
- 资源: 2464
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 数据库管理工具:dbeaver-ce-23.3.4-amd64.deb
- 数据库管理工具:dbeaver-ce-23.3.3-amd64.deb
- 数据库管理工具:dbeaver-ce-23.3.2-amd64.deb
- 数据库管理工具:dbeaver-ce-23.3.1-amd64.deb
- 深度学习记录,训练集?
- 数据库管理工具:dbeaver-ce-23.3.0-amd64.deb
- 数据库管理工具:dbeaver-ce-23.2.5-amd64.deb
- 数据库管理工具:dbeaver-ce-23.2.4-amd64.deb
- 数据库管理工具:dbeaver-ce-23.2.3-amd64.deb
- 数据库管理工具:dbeaver-ce-23.2.2-amd64.deb
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功