算法:数据结构
This commit is contained in:
parent
973e28ad64
commit
6636f86f66
32
.obsidian/workspace
vendored
32
.obsidian/workspace
vendored
@ -7,8 +7,13 @@
|
|||||||
"id": "742c808ba884e60f",
|
"id": "742c808ba884e60f",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "empty",
|
"type": "markdown",
|
||||||
"state": {}
|
"state": {
|
||||||
|
"file": "wiki/algo/概述/算法.md",
|
||||||
|
"mode": "source",
|
||||||
|
"backlinks": false,
|
||||||
|
"source": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -92,7 +97,9 @@
|
|||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {}
|
"state": {
|
||||||
|
"file": "wiki/algo/概述/算法.md"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -111,23 +118,24 @@
|
|||||||
"state": {}
|
"state": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"currentTab": 4
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 238.5
|
"width": 238.5
|
||||||
},
|
},
|
||||||
"active": "73ad29197a6e1773",
|
"active": "ed729260027c7607",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
|
"wiki/algo/概述/数据结构.md",
|
||||||
|
"wiki/algo/概述/算法.md",
|
||||||
|
"templates/文档 - 完全模板.md",
|
||||||
|
"templates/文档 - 快速模板.md",
|
||||||
|
"wiki/algo/常见算法.md",
|
||||||
|
"templates/日志 - 季度模板.md",
|
||||||
"blog/写十万字的博客是一种什么感觉.md",
|
"blog/写十万字的博客是一种什么感觉.md",
|
||||||
"blog/未命名.md",
|
"blog/未命名.md",
|
||||||
"templates/博客 - 快速模板.md",
|
"templates/博客 - 快速模板.md",
|
||||||
"templates/文档 - 快速模板.md",
|
"templates/日志 - 周记模板.md"
|
||||||
"templates/文档 - 完全模板.md",
|
|
||||||
"templates/日志 - 周记模板.md",
|
|
||||||
"templates/日志 - 日记模板.md",
|
|
||||||
"templates/日志 - 季度模板.md",
|
|
||||||
"templates/博客 - 完全模板.md",
|
|
||||||
"未命名.md"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -244,7 +244,7 @@ const config = {
|
|||||||
to: "/dev",
|
to: "/dev",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "逻辑算法",
|
label: "算法逻辑",
|
||||||
to: "/algo",
|
to: "/algo",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -21,7 +21,6 @@ slug: string | 自定义文档的 URL
|
|||||||
tags:
|
tags:
|
||||||
- 文档标签
|
- 文档标签
|
||||||
draft: boolean | 表明文档处于未完成状态
|
draft: boolean | 表明文档处于未完成状态
|
||||||
last_update:
|
|
||||||
date: 1/1/2000
|
date: 1/1/2000
|
||||||
author: 自定义作者名
|
author: 自定义作者名
|
||||||
---
|
---
|
||||||
|
@ -5,7 +5,6 @@ keywords:
|
|||||||
- 关键字
|
- 关键字
|
||||||
tags:
|
tags:
|
||||||
- 标签
|
- 标签
|
||||||
last_update:
|
|
||||||
author: 7Wate
|
author: 7Wate
|
||||||
date: <% tp.date.now("YYYY-MM-DD") %>
|
date: <% tp.date.now("YYYY-MM-DD") %>
|
||||||
---
|
---
|
||||||
|
@ -1,202 +0,0 @@
|
|||||||
---
|
|
||||||
id: 常见代码
|
|
||||||
title: 常见代码
|
|
||||||
sidebar_position: 3
|
|
||||||
data: 2022年1月27日
|
|
||||||
---
|
|
||||||
## 九九乘法表
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
输出乘法口诀表(九九表)
|
|
||||||
|
|
||||||
Version: 0.1
|
|
||||||
Author: 骆昊
|
|
||||||
"""
|
|
||||||
|
|
||||||
for i in range(1, 10):
|
|
||||||
for j in range(1, i + 1):
|
|
||||||
print('%d*%d=%d' % (i, j, i * j), end='\t')
|
|
||||||
print()
|
|
||||||
```
|
|
||||||
|
|
||||||
## 判断是不是素数
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
输入一个正整数判断它是不是素数
|
|
||||||
|
|
||||||
Version: 0.1
|
|
||||||
Author: 骆昊
|
|
||||||
Date: 2018-03-01
|
|
||||||
"""
|
|
||||||
from math import sqrt
|
|
||||||
|
|
||||||
num = int(input('请输入一个正整数: '))
|
|
||||||
end = int(sqrt(num))
|
|
||||||
is_prime = True
|
|
||||||
for x in range(2, end + 1):
|
|
||||||
if num % x == 0:
|
|
||||||
is_prime = False
|
|
||||||
break
|
|
||||||
if is_prime and num != 1:
|
|
||||||
print('%d是素数' % num)
|
|
||||||
else:
|
|
||||||
print('%d不是素数' % num)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 打印三角形图案
|
|
||||||
|
|
||||||
```python
|
|
||||||
*
|
|
||||||
**
|
|
||||||
***
|
|
||||||
****
|
|
||||||
*****
|
|
||||||
```
|
|
||||||
|
|
||||||
```python
|
|
||||||
*
|
|
||||||
**
|
|
||||||
***
|
|
||||||
****
|
|
||||||
*****
|
|
||||||
```
|
|
||||||
|
|
||||||
```python
|
|
||||||
*
|
|
||||||
***
|
|
||||||
*****
|
|
||||||
*******
|
|
||||||
*********
|
|
||||||
```
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
打印三角形图案
|
|
||||||
|
|
||||||
Version: 0.1
|
|
||||||
Author: 骆昊
|
|
||||||
"""
|
|
||||||
|
|
||||||
row = int(input('请输入行数: '))
|
|
||||||
for i in range(row):
|
|
||||||
for _ in range(i + 1):
|
|
||||||
print('*', end='')
|
|
||||||
print()
|
|
||||||
|
|
||||||
|
|
||||||
for i in range(row):
|
|
||||||
for j in range(row):
|
|
||||||
if j < row - i - 1:
|
|
||||||
print(' ', end='')
|
|
||||||
else:
|
|
||||||
print('*', end='')
|
|
||||||
print()
|
|
||||||
|
|
||||||
for i in range(row):
|
|
||||||
for _ in range(row - i - 1):
|
|
||||||
print(' ', end='')
|
|
||||||
for _ in range(2 * i + 1):
|
|
||||||
print('*', end='')
|
|
||||||
print()
|
|
||||||
```
|
|
||||||
|
|
||||||
## 寻找水仙花数
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
找出所有水仙花数
|
|
||||||
|
|
||||||
Version: 0.1
|
|
||||||
Author: 骆昊
|
|
||||||
"""
|
|
||||||
|
|
||||||
for num in range(100, 1000):
|
|
||||||
low = num % 10
|
|
||||||
mid = num // 10 % 10
|
|
||||||
high = num // 100
|
|
||||||
if num == low ** 3 + mid ** 3 + high ** 3:
|
|
||||||
print(num)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 数字反转
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
正整数的反转
|
|
||||||
|
|
||||||
Version: 0.1
|
|
||||||
Author: 骆昊
|
|
||||||
"""
|
|
||||||
|
|
||||||
num = int(input('num = '))
|
|
||||||
reversed_num = 0
|
|
||||||
while num > 0:
|
|
||||||
reversed_num = reversed_num * 10 + num % 10
|
|
||||||
num //= 10
|
|
||||||
print(reversed_num)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 百钱百鸡
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
《百钱百鸡》问题
|
|
||||||
|
|
||||||
Version: 0.1
|
|
||||||
Author: 骆昊
|
|
||||||
"""
|
|
||||||
|
|
||||||
for x in range(0, 20):
|
|
||||||
for y in range(0, 33):
|
|
||||||
z = 100 - x - y
|
|
||||||
if 5 * x + 3 * y + z / 3 == 100:
|
|
||||||
print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z))
|
|
||||||
```
|
|
||||||
|
|
||||||
## CRAPS赌博游戏
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
Craps赌博游戏
|
|
||||||
我们设定玩家开始游戏时有1000元的赌注
|
|
||||||
游戏结束的条件是玩家输光所有的赌注
|
|
||||||
|
|
||||||
Version: 0.1
|
|
||||||
Author: 骆昊
|
|
||||||
"""
|
|
||||||
from random import randint
|
|
||||||
|
|
||||||
money = 1000
|
|
||||||
while money > 0:
|
|
||||||
print('你的总资产为:', money)
|
|
||||||
needs_go_on = False
|
|
||||||
while True:
|
|
||||||
debt = int(input('请下注: '))
|
|
||||||
if 0 < debt <= money:
|
|
||||||
break
|
|
||||||
first = randint(1, 6) + randint(1, 6)
|
|
||||||
print('玩家摇出了%d点' % first)
|
|
||||||
if first == 7 or first == 11:
|
|
||||||
print('玩家胜!')
|
|
||||||
money += debt
|
|
||||||
elif first == 2 or first == 3 or first == 12:
|
|
||||||
print('庄家胜!')
|
|
||||||
money -= debt
|
|
||||||
else:
|
|
||||||
needs_go_on = True
|
|
||||||
while needs_go_on:
|
|
||||||
needs_go_on = False
|
|
||||||
current = randint(1, 6) + randint(1, 6)
|
|
||||||
print('玩家摇出了%d点' % current)
|
|
||||||
if current == 7:
|
|
||||||
print('庄家胜')
|
|
||||||
money -= debt
|
|
||||||
elif current == first:
|
|
||||||
print('玩家胜')
|
|
||||||
money += debt
|
|
||||||
else:
|
|
||||||
needs_go_on = True
|
|
||||||
print('你破产了, 游戏结束!')
|
|
||||||
```
|
|
73
wiki/algo/概述/数据结构.md
Normal file
73
wiki/algo/概述/数据结构.md
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
title: 数据结构
|
||||||
|
description: 数据结构的定义
|
||||||
|
keywords:
|
||||||
|
- 数据结构
|
||||||
|
- 抽象数据类型
|
||||||
|
tags:
|
||||||
|
- 数据结构
|
||||||
|
author: 7Wate
|
||||||
|
date: 2022-08-25
|
||||||
|
---
|
||||||
|
## 概述
|
||||||
|
数据结构是相互之间存在**一种或多种特定关系**的数据元素的集合。
|
||||||
|
## 数据
|
||||||
|
数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
|
||||||
|
|
||||||
|
**数据项 > 数据元素 >> 数据对象:数据项构成了数据元素,数据元素组合成了数据对象。**
|
||||||
|
|
||||||
|
## 结构
|
||||||
|
结构是不同数据元素之间不是独立的,而是存在特定的关系。
|
||||||
|
### 逻辑结构
|
||||||
|
逻辑结构是指**数据对象 中 数据元素**之间的相互关系。
|
||||||
|
|
||||||
|
- 集合:集合结构中的数据元素除了属于一个集合外,它们之间**没有其他关系**。
|
||||||
|
- 线性:线性结构中的数据元素之间是**一对一的关系**。
|
||||||
|
- 树形:树形结构中的数据元素之间存在一种**多对多的层次关系**。
|
||||||
|
- 图形:图形结构的数据元素是**多对多的关系**。
|
||||||
|
|
||||||
|
### 物理结构
|
||||||
|
|
||||||
|
物理结构是指数据的逻辑结构在计算机中的存储形式。
|
||||||
|
|
||||||
|
#### 顺序存储
|
||||||
|
|
||||||
|
顺序存储结构是把数据元素放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
|
||||||
|
|
||||||
|
#### 链式存储
|
||||||
|
|
||||||
|
链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
|
||||||
|
|
||||||
|
## 数据类型
|
||||||
|
|
||||||
|
数据类型是指一组**性质相同的值的集合**以及定义在此**集合上的一些操作**的总称。
|
||||||
|
|
||||||
|
### 定义
|
||||||
|
|
||||||
|
- 相同数据对象集合(例如整数 > 整数型,字符 > 字符型)。
|
||||||
|
- 集合相关联的操作(整数可以加减,字符可以拼接)。
|
||||||
|
|
||||||
|
### 分类
|
||||||
|
|
||||||
|
- 原子类型(字节型、数值型、字符串型)。
|
||||||
|
- 结构类型(原子类型的组合)。
|
||||||
|
|
||||||
|
## 抽象数据类型
|
||||||
|
|
||||||
|
抽象数据类型(Abstract Data Type,ADT)是指一个数学模型及其定义在该模型上的一组操作。
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
ADT 抽象数据类型名
|
||||||
|
Data
|
||||||
|
数据元素之间逻辑关系的定义
|
||||||
|
Operation
|
||||||
|
操作1
|
||||||
|
初始条件
|
||||||
|
操作结果描述
|
||||||
|
操作2
|
||||||
|
…………
|
||||||
|
操作n
|
||||||
|
…………
|
||||||
|
endADT
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue
Block a user