Skip to content

Commit 6e94202

Browse files
committed
更新文档
1 parent 5d47435 commit 6e94202

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,6 @@ install_manifest.txt
6363
compile_commands.json
6464
CTestTestfile.cmake
6565

66+
# Clion files
67+
.idea
68+
algorithms.cbp

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,13 @@
11
# algorithms
22
《算法导论》(Thomas H. Cormen, 第三版)中伪代码的c语言代码实现
3+
4+
## 运行测试
5+
6+
```shell
7+
# 生成构建文件
8+
cmake .
9+
# 构建
10+
make
11+
# 运行测试demo
12+
./test_algorithms
13+
```

chap02/insertion_sort.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,23 @@
33
*/
44
#include "insertion_sort.h"
55
#include "../utils.h"
6+
/**
7+
* 插入排序
8+
*/
69
void insertion_sort(int nums[], int len) {
10+
// 要插入第i个数,从i-i个数开始往前扫描
11+
// 循环不变式: nums[0]~nums[i-1]是排好序的
712
for (int i = 1; i < len; i++) {
8-
// 要插入第i个数,从i-i个数开始往前扫描
913
int j = i-1;
1014
int key = nums[i];
1115
// 只要被扫描的数大于等于要插入的数就把被扫描的数往后挪一个位置,
12-
// 然后接着扫描前一个数
16+
// 然后接着扫描前一个数,知道没有剩余没扫描的数字或者要被扫描的数字小于等于key
17+
// 循环不变式: nums[0]~nums[j],nums[j+2]~nums[i]升序且,且nums[j+2]~nums[i]都是比key大的
1318
while (j >= 0 && nums[j] > key) {
1419
nums[j+1] = nums[j];
1520
j--;
1621
}
17-
// 扫描结束,要插入的数的最终位置就是最后被扫描的数的后面
22+
// 扫描结束,根据循环不变式要插入的数的位置就是j+1
1823
nums[j+1] = key;
1924
}
2025
}

chap15/cut_rod.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ int bottom_up_cut_rod(int price_table[], int n) {
8383
max_table[i] = max;
8484
}
8585
int result = max_table[n];
86-
print_array(max_table, n);
8786
free(max_table);
8887
return result;
8988
}

0 commit comments

Comments
 (0)