Skip to content

Commit bf12765

Browse files
committed
update
1 parent c650b64 commit bf12765

File tree

2 files changed

+79
-25
lines changed

2 files changed

+79
-25
lines changed

C-算法/README.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
**题解**
2+
---
3+
- [剑指Offer 题解](./题解-剑指Offer.md)
4+
- [Leetcode 题解](./题解-LeetCode.md)
5+
6+
**专题**
7+
---
8+
- A
9+
- [数据结构](./专题-A-数据结构)
10+
- [数据结构_Advanced](./专题-A-数据结构_Advanced)
11+
- B
12+
- [双指针](./专题-B-双指针)
13+
- [动态规划](./专题-B-动态规划)
14+
- C
15+
- [排列组合](./专题-C-排列组合)
16+
- [洗牌、采样、随机数](./专题-C-洗牌、采样、随机数)
17+
18+
**备忘**
19+
---
20+
- [IO 模板](./备忘-IO模板.md)
21+
- [必备算法](./备忘-必备算法.md)
22+
23+
Reference
24+
---
25+
- f-zyj/[ACM 模板以及个人平时训练的代码](https://github.com/f-zyj/ACM)
26+
> [ACM 在线模版 - 逐梦者](https://blog.csdn.net/f_zyj/article/details/51594851) - CSDN博客
27+
28+
Index
29+
---
30+
<!-- TOC -->
31+
32+
- [排序](#排序)
33+
- [稳定排序与不稳定排序](#稳定排序与不稳定排序)
34+
- [堆排序-建堆的时间复杂度 `O(N)`](#堆排序-建堆的时间复杂度-on)
35+
- [Trick](#trick)
36+
- [时间复杂度](#时间复杂度)
37+
- [敏感空间](#敏感空间)
38+
39+
<!-- /TOC -->
40+
41+
42+
# 排序
43+
44+
## 稳定排序与不稳定排序
45+
**稳定排序**
46+
- 冒泡排序、插入排序、归并排序、基数排序
47+
48+
**不稳定排序**
49+
- 选择排序、快速排序、希尔排序、堆排序
50+
51+
## 堆排序-建堆的时间复杂度 `O(N)`
52+
- 堆排序的时间复杂度是 `O(NlogN)` 没有问题
53+
- 但是建堆的时间复杂度是 `O(N)`
54+
> [为什么建立一个二叉堆的时间为O(N)而不是O(Nlog(N))?](https://www.zhihu.com/question/264693363/answer/291397356) - 知乎
55+
56+
57+
58+
# Trick
59+
60+
## 时间复杂度
61+
> [百度:ACM trick](https://www.baidu.com/s?wd=ACM%20trick)
62+
- 暴力枚举永远是第一个考虑的方法,但也有一些前提
63+
- 如果输入规模 `< 1e4`,那么可以尝试考虑 `O(n^2)` 的算法(两次循环暴力枚举);如果 `≥ 1e5`,那么可能就需要考虑 `O(nlogn)` 的算法了——这不是绝对的,也可以通过剪枝等操作加速。
64+
- [C++] string 拼接的速度依次为:1)使用 `stringstream`;2)使用 `append()`;3)使用 `s += c`;4)使用 `s = s + c`——如果有大量拼接操作,要避免使用最后一种方法。
65+
66+
## 敏感空间
67+
> [ACM Trick点&&常用操作记录(持续更新)(敏感空间)](https://blog.csdn.net/feynman1999/article/details/79588347) - CSDN博客
68+
- `long long` 上界:`2^63-1 = 9,223,372,036,854,775,807 ≈ 9.223372e+18`
69+
- 阶乘:`20! = 2432902008176640000 ≈ 2.432902e+18` OK,`21!`
70+
- Fibnacci 数列:`fib[92] = 7540113804746346429 ≈ 7.540114e+18` OK,`fib[93]`
71+
- Catalan 数:
72+
- 整数划分:
73+
- **数组大小**:如果内存限制为 2MB,那么最大可开辟的 int 数组为 `2*1024*1024/4 = 524288 ≈ 50,0000`,char 数组为 `2*1024*1024 = 2,097,152 ≈ 200,0000`
74+
- 实际单个数组是远开不了那么大,比如 windows 默认的栈好像只有 1MB
75+
- 在无法修改栈大小的情况下,可以使用 `new``malloc`****上开辟内存
76+
```C
77+
int *pa = malloc(sizeof(int)*1024*1024);
78+
int *pb = new int[1024*1024];
79+
```

C-算法/专题-D-局部敏感哈希.md

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)