Skip to content

Commit e7d2b43

Browse files
committed
Merge branch 'master' of github.com:facert/python-data-structure-cn
2 parents 9bf72ac + e3ac537 commit e7d2b43

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

2.算法分析/2.3.大O符号/README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
计算机科学家更喜欢将这种分析技术进一步扩展。事实证明,操作步骤数量不如确定 T(n) 最主要的部分来的重要。换句话说,当问题规模变大时,T(n) 函数某些部分的分量会超过其他部分。函数的数量级表示了随着 n 的值增加而增加最快的那些部分。数量级通常称为大O符号,写为 `O(f(n))`。它表示对计算中的实际步数的近似。函数 f(n) 提供了 T(n) 最主要部分的表示方法。
55

6+
<<<<<<< HEAD
67
在上述示例中,`T(n)=1+n`。当 n 变大时,常熟 1 对于最终结果变得越来越不重要。如果我们找的是 \(T(n)\) 的近似值,我们可以删除 1, 运行时间是\(O(n)\)。要注意,1 对于 \(T(n)\) 肯定是重要的。但是当 n 变大时,如果没有它,我们的近似也是准确的。
8+
=======
9+
在上述示例中,\(T(n)=1+n\)。当 n 变大时,常数 1 对于最终结果变得越来越不重要。如果我们找的是 \(T(n)\) 的近似值,我们可以删除 1, 运行时间是\(O(n)\)。要注意,1 对于 \(T(n)\) 肯定是重要的。但是当 n 变大时,如果没有它,我们的近似也是准确的。
10+
>>>>>>> e3ac537a1fb4277537aa0925e0371ff7f6e35aa7
711
812
另外一个示例,假设对于一些算法,确定的步数是 T(n)=5n^2 +27n+1005。当 n 很小时, 例如 1 或 2 ,常数 1005 似乎是函数的主要部分。然而,随着 n 变大,\(n^2\) 这项变得越来越重要。事实上,当 n 真的很大时,其他两项在它们确定最终结果中所起的作用变得不重要。当 n 变大时,为了近似\(T(n)\),我们可以忽略其他项,只关注 \(5n^2 \)。系数 5 也变得不重要。我们说,\(T(n)\) 具有的数量级为 f(n)=n^2。 或者 O( n^2 ) 。
913

@@ -39,7 +43,7 @@ d = 33
3943
````
4044
*Listing 2*
4145

42-
分配操作数分为四个项的总和。第一个项是常熟 3, 表示片段开始的三个赋值语句。第二项是 3n^2, 因为由于嵌套迭代,有三个语句执行 n^2 次。第三项是 2n, 两个语句迭代 n 次。最后,第四项是常数 1,表示最终赋值语句。最后得出 T(n)=3+3n^(2)+2n+1=3n^2 + 2n+4,通过查看指数,我们可以看到 n^2 项是显性的,因此这个代码段是 O(n^ 2 )。当 n 增大时,所有其他项以及主项上的系数都可以忽略。
46+
分配操作数分为四个项的总和。第一个项是常数 3, 表示片段开始的三个赋值语句。第二项是 3n^2, 因为由于嵌套迭代,有三个语句执行 n^2 次。第三项是 2n, 两个语句迭代 n 次。最后,第四项是常数 1,表示最终赋值语句。最后得出 T(n)=3+3n^(2)+2n+1=3n^2 + 2n+4,通过查看指数,我们可以看到 n^2 项是显性的,因此这个代码段是 O(n^ 2 )。当 n 增大时,所有其他项以及主项上的系数都可以忽略。
4347
![newplot2](assets/newplot2.png)
4448
*Figure 2*
4549

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,22 @@
44

55
#### 目的
66

7-
数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少,其中比较著名的一本 [problem-solving-with-algorithms-and-data-structure-using-python](http://interactivepython.org/runestone/static/pythonds/index.html),所以我在学习的过程中将其翻译了中文版,希望对大家有点帮助。
7+
数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少,
8+
其中比较著名的一本 [problem-solving-with-algorithms-and-data-structure-using-python](http://interactivepython.org/runestone/static/pythonds/index.html),所以我在学习的过程中将其翻译了中文版,希望对大家有点帮助。
89

910
* 由于本人英语能力不佳,本书部分翻译参考谷歌,但每句话都经过个人理解后调整修改,尽量保证语句畅通。
1011
* 由于翻译比较仓促,难以避免有些排版错别字等问题,后续会润色。如你也有兴趣参与,可 pull request 到 [github 仓库](https://github.com/facert/python-data-structure-cn)
1112
* 默认大家有一定的 Python 基础,故暂未翻译 Python 语法的几个章节。后续考虑书的完整性会加上这几节。
1213
* 本书未加上课后练习,如有兴趣,可上原书网站练习。
1314

1415
#### 地址
15-
github 地址: https://github.com/facert/python-data-structure-cn
16-
gitbook 在线浏览: https://facert.gitbooks.io/python-data-structure-cn
16+
* github 地址: https://github.com/facert/python-data-structure-cn
17+
* gitbook 在线浏览: https://facert.gitbooks.io/python-data-structure-cn
1718

1819

1920
#### 联系作者
20-
21-
博客: https://facert.github.io
21+
* 邮箱: [email protected]
22+
* 博客: https://facert.github.io
2223

2324
#### 许可证
2425
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。传播此文档时请注意遵循以上许可协议。 关于本许可证的更多详情可参考 http://creativecommons.org/licenses/by-sa/4.0/

0 commit comments

Comments
 (0)