Skip to content

Commit

Permalink
style: prettify code
Browse files Browse the repository at this point in the history
  • Loading branch information
yanglbme authored and actions-user committed Nov 23, 2020
1 parent b5b28bb commit 0a95366
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 61 deletions.
75 changes: 68 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,129 +1,190 @@
# 必知必会:数据结构与算法

[![java-ci](https://github.com/doocs/data-structure-and-algorithm/workflows/Java%20CI/badge.svg)](https://github.com/doocs/data-structure-and-algorithm/actions)
[![prs-welcome](https://badgen.net/badge/PRs/welcome/green)](http://makeapullrequest.com)
[![doocs-open-source-organization](https://badgen.net/badge/organization/join%20us/cyan)](https://doocs.github.io/#/?id=how-to-join)
[![gitter](https://badgen.net/badge/gitter/chat/cyan)](https://gitter.im/doocs)


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



## 数据结构的划分

- [如何区分数据结构中的线性结构与非线性结构?](/docs/linear-vs-nonlinear-data-structure.md)

## 稀疏矩阵和队列

- [说一说什么是稀疏矩阵?稀疏矩阵有哪些存储方式?](/docs/the-introduction-to-sparse-matrix.md)

### 堆栈

- [堆栈](/docs/stack-introduction.md)
- [堆栈的实现]()

### 队列

- [队列介绍](/docs/queue-introduction.md)
- [队列的一个使用场景](/docs/queue-usage.md)
- 数组模拟队列的思路
- 数组模拟环形队列

## 链表

### 链表介绍

### 单链表应用实例

### 单链表大厂面试题

### 双向链表应用实例

### 单向环形链表应用场景

### 单向环形链表介绍
### 约瑟夫问题

### 约瑟夫问题

##

### 栈的一个实际需求

### 栈的介绍

### 栈的应用场景

### 栈的快速入门

### 栈实现综合计算器

### 逆波兰计算器

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

## 递归

### 递归与递归调用机制

### 递归-迷宫问题

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

## 排序算法

### 排序算法介绍

### 算法的时空复杂度

### 冒泡排序

### 选择排序

### 插入排序

### 希尔排序

### 快速排序

### 归并排序

### 基数排序

### 常用排序算法对比总结

## 查找算法

### 线性查找算法

### 二分查找算法

### 插值查找算法

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

## 哈希表

### 哈希表的基本介绍

### Google 公司的一个上机题

## 树结构

### 二叉树

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

### 顺序存储二叉树

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

### 线索化二叉树

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

## 树结构应用

### 堆排序

### 赫夫曼树

### 赫夫曼编码

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

### 二叉排序树

### 平衡二叉树(AVL 树)

- 左旋
- 右旋
- 双旋转

## 多路查找树

### 二叉树与 B 树

###
### B 树、B+ 树和 B*

### B 树、B+ 树和 B\*

##

### 图基本介绍

### 图的表示方式

### 图的深度优先遍历

### 图的广度优先遍历

### 图的深度优先 VS 广度优先

## 10 大常用算法

### 二分查找算法(非递归)

### 分治算法

### 动态规划算法

### KMP 算法

### 贪心算法

### 普里姆算法

### 克鲁斯卡尔算法

### 迪杰斯特拉算法

### 弗洛伊德算法
### 马踏棋盘算法

### 马踏棋盘算法
2 changes: 1 addition & 1 deletion docs/extra-page/cover.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
[Organization](https://github.com/doocs/doocs.github.io)
[Author](https://github.com/yanglbme)
[Get Started](#必知必会:数据结构与算法)
[Get Started](#必知必会:数据结构与算法)
4 changes: 3 additions & 1 deletion docs/linear-vs-nonlinear-data-structure.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# 如何区分数据结构中的线性结构与非线性结构?

数据结构可以分成两种:

- 线性结构
Expand All @@ -7,12 +8,13 @@
下面就来简单聊聊这两种结构,至于具体的数据结构,后续的文章还会再做说明,别着急。

## 线性结构

先来说线性结构,怎么理解呢?线性结构的元素之间是一个接着一个连接,构成线性的形式。比如数组、链表、栈、队列等。

- 对于数组,元素依次顺序存放,紧挨着,是一种**顺序存储方式**
- 对于链表,元素之间离散存储,通过指针彼此相连,是一种**链式存储方式**
- 对于栈跟队列,可以用上面两种结构:数组或链表来实现。

## 非线性结构
非线性结构,也挺好理解。非线性结构的元素可以有多个子元素与之关联。比如,树结构,一个节点可以有左右子节点;图结构,每个节点都可以与多个节点关联,从而构成复杂网络。

非线性结构,也挺好理解。非线性结构的元素可以有多个子元素与之关联。比如,树结构,一个节点可以有左右子节点;图结构,每个节点都可以与多个节点关联,从而构成复杂网络。
2 changes: 1 addition & 1 deletion docs/queue-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@
### 按物理结构

- 数组队列
- 链表队列
- 链表队列
4 changes: 2 additions & 2 deletions docs/queue-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@

在这里我们就用在网上买火车票这样一个例子来说明队列在计算机中的运用吧

假若有用户A与用户B都想买一张西安去北京的票,但是当前票只剩下一张了,那么到底应该卖给谁呢?
假若有用户 A 与用户 B 都想买一张西安去北京的票,但是当前票只剩下一张了,那么到底应该卖给谁呢?

很简单,只需要看谁下单的早谁就先买到票,当两个用户同时下单时服务器会将当前请求买票的用户排一个**优先级队列**(优先级为时间),谁下单时间早谁就更有优先权得到票,那么后边得不到票的人就需要先等着,等到系统出现余票时再进一步分配,充分体现了**先来先服务**的原则。
很简单,只需要看谁下单的早谁就先买到票,当两个用户同时下单时服务器会将当前请求买票的用户排一个**优先级队列**(优先级为时间),谁下单时间早谁就更有优先权得到票,那么后边得不到票的人就需要先等着,等到系统出现余票时再进一步分配,充分体现了**先来先服务**的原则。
112 changes: 63 additions & 49 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,52 +1,66 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>算法与数据结构</title>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
</head>
<body>
<div id="app">本系列知识由 Doocs 开源社区总结发布</div>
<script>
window.$docsify = {
name: '数据结构与算法',
repo: 'doocs/data-structure-and-algorithm',
maxLevel: 3,
auto2top: true,
coverpage: true,
coverpage: 'docs/extra-page/cover.md',
search: [
'/'
],
plugins: [
function (hook) {
var footer = [
'<hr/>',
'<footer>',
'<span>Copyright © 2018-2019 <a href="https://github.com/doocs" target="_blank">Doocs</a>. All rights reserved.</span><br>Welcome to join the <a href="https://github.com/doocs/intro" target="_blank">Doocs Open Source organization</a>.',
'</footer>'
].join('')
<head>
<meta charset="UTF-8" />
<title>算法与数据结构</title>
<meta
name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
/>
<link
rel="stylesheet"
href="//cdn.jsdelivr.net/npm/docsify/lib/themes/vue.css"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="images/favicon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="images/favicon-16x16.png"
/>
</head>
<body>
<div id="app">本系列知识由 Doocs 开源社区总结发布</div>
<script>
window.$docsify = {
name: "数据结构与算法",
repo: "doocs/data-structure-and-algorithm",
maxLevel: 3,
auto2top: true,
coverpage: true,
coverpage: "docs/extra-page/cover.md",
search: ["/"],
plugins: [
function (hook) {
var footer = [
"<hr/>",
"<footer>",
'<span>Copyright © 2018-2019 <a href="https://github.com/doocs" target="_blank">Doocs</a>. All rights reserved.</span><br>Welcome to join the <a href="https://github.com/doocs/intro" target="_blank">Doocs Open Source organization</a>.',
"</footer>",
].join("");

hook.afterEach(function (html) {
return html + footer
})
}
]
}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-c.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-bash.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-cpp.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-json.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-java.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-python.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.js"></script>
</body>
</html>
hook.afterEach(function (html) {
return html + footer;
});
},
],
};
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-c.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-bash.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-cpp.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-json.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-java.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs/components/prism-python.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.js"></script>
</body>
</html>

0 comments on commit 0a95366

Please sign in to comment.