1. 命名约定
最重要的一致性规则是命名管理. 命名的风格能让我们在不需要去查找类型声明的条件下快速地了解某个名字代表的含义: 类型, 变量, 函数, 常量, 宏, 等等, 甚至, 我们大脑中的模式匹配引擎非常依赖这些命名规则.
命名规则具有一定随意性, 但相比按个人喜好命名, 一致性更重要, 所以无论你认为它们是否重要, 规则总归是规则.
1 | CMAKE_MINIMUM_REQUIRED(VERSION 3.15) |
| 排序方法 | 时间复杂度 (平均) |
时间复杂度 (最好) |
时间复杂度 (最坏) |
空间复杂度 | 稳定度 |
|---|---|---|---|---|---|
| 直接插入 | O(n2) | O(n) | O(n2) | O(1) | √ |
| 希尔排序 | O(n1.3) | O(n) | O(n2) | O(1) | × |
| 选择排序 | O(n2) | O(n2) | O(n2) | O(1) | × |
| 堆排序 | O(nlog2n) | O(nlog2n) | O(nlog2n) | O(1) | × |
| 冒泡排序 | O(n2) | O(n) | O(n2) | O(1) | √ |
| 快速排序 | O(nlog2n) | O(nlog2n) | O(n2) | O(nlog2n) | × |
| 归并排序 | O(nlog2n) | O(nlog2n) | O(nlog2n) | O(n) | √ |
| 计数排序 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | √ |
| 桶排序 | O(n+k) | O(n) | O(n2) | O(n+k) | √ |
| 基数排序 | O(d(r+n)) O(n*k) |
O(d(n+rd)) O(n*k) |
O(d(r+n)) O(n*k) |
O(rd+n) O(n+k) |
√ |
基数排序中,r表示关键字的基数,d表示长度,n表示关键字个数。