diff --git a/codes/javascript/chapter_computational_complexity/time_complexity.js b/codes/javascript/chapter_computational_complexity/time_complexity.js new file mode 100644 index 000000000..1ce3ffbf0 --- /dev/null +++ b/codes/javascript/chapter_computational_complexity/time_complexity.js @@ -0,0 +1,21 @@ +/** + * File: time_complexity.js + * Created Time: 2023-01-02 + * Author: RiverTwilight (contact@rene.wang) + */ + +function algorithm_A(n) { + console.log(0); +} +// 算法 B 时间复杂度:线性阶 +function algorithm_B(n) { + for (var i = 0; i < n; i++) { + console.log(0); + } +} +// 算法 C 时间复杂度:常数阶 +function algorithm_C(n) { + for (var i = 0; i < 1000000; i++) { + console.log(0); + } +} diff --git a/codes/typescript/chapter_computational_complexity/time_complexity.ts b/codes/typescript/chapter_computational_complexity/time_complexity.ts new file mode 100644 index 000000000..cc183265b --- /dev/null +++ b/codes/typescript/chapter_computational_complexity/time_complexity.ts @@ -0,0 +1,22 @@ +/** + * File: time_complexity.ts + * Created Time: 2023-01-02 + * Author: RiverTwilight (contact@rene.wang) + */ + +// 算法 A 时间复杂度:常数阶 +function algorithm_A(n: number): void { + console.log(0); +} +// 算法 B 时间复杂度:线性阶 +function algorithm_B(n: number): void { + for (var i = 0; i < n; i++) { + console.log(0); + } +} +// 算法 C 时间复杂度:常数阶 +function algorithm_C(n: number): void { + for (var i = 0; i < 1000000; i++) { + console.log(0); + } +} diff --git a/docs/chapter_computational_complexity/time_complexity.md b/docs/chapter_computational_complexity/time_complexity.md index 75f2dd31e..dd82b6a2a 100644 --- a/docs/chapter_computational_complexity/time_complexity.md +++ b/docs/chapter_computational_complexity/time_complexity.md @@ -148,9 +148,9 @@ $$ “时间增长趋势”这个概念比较抽象,我们借助一个例子来理解。设输入数据大小为 $n$ ,给定三个算法 `A` , `B` , `C` 。 -- 算法 `A` 只有 $1$ 个打印操作,算法运行时间不随着 $n$ 增大而增长。我们称此算法的时间复杂度为「常数阶」。 -- 算法 `B` 中的打印操作需要循环 $n$ 次,算法运行时间随着 $n$ 增大成线性增长。此算法的时间复杂度被称为「线性阶」。 -- 算法 `C` 中的打印操作需要循环 $1000000$ 次,但运行时间仍与输入数据大小 $n$ 无关。因此 `C` 的时间复杂度和 `A` 相同,仍为「常数阶」。 +- 算法 `A` 只有 $1$ 个打印操作,算法运行时间不随着 $n$ 增大而增长。我们称此算法的时间复杂度为「常数阶」。 +- 算法 `B` 中的打印操作需要循环 $n$ 次,算法运行时间随着 $n$ 增大成线性增长。此算法的时间复杂度被称为「线性阶」。 +- 算法 `C` 中的打印操作需要循环 $1000000$ 次,但运行时间仍与输入数据大小 $n$ 无关。因此 `C` 的时间复杂度和 `A` 相同,仍为「常数阶」。 === "Java" @@ -233,7 +233,7 @@ $$ === "JavaScript" - ```js title="" + ```js title="time_complexity.js" // 算法 A 时间复杂度:常数阶 function algorithm_A(n) { console.log(0); @@ -255,7 +255,7 @@ $$ === "TypeScript" - ```typescript title="" + ```typescript title="time_complexity.ts" // 算法 A 时间复杂度:常数阶 function algorithm_A(n: number): void { console.log(0); @@ -343,7 +343,7 @@ $$ ## 函数渐近上界 -设算法「计算操作数量」为 $T(n)$ ,其是一个关于输入数据大小 $n$ 的函数。例如,以下算法的操作数量为 +设算法「计算操作数量」为 $T(n)$ ,其是一个关于输入数据大小 $n$ 的函数。例如,以下算法的操作数量为 $$ T(n) = 3 + 2n @@ -399,7 +399,7 @@ $$ // 循环 n 次 for i := 0; i < n; i++ { // +1 fmt.Println(a) // +1 - } + } } ``` @@ -640,7 +640,7 @@ $$