Rust原子操作高性能实践 Rust Atomic Deep Dive - 王璞0 码力 | 19 页 | 1.88 MB | 2 年前3
Hello 算法 1.2.0 简体中文 C++ 版count += 3; // 元素交换包含 3 个单元操作 } } } return count; } ### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ 。请注意,输入 n 表示分裂轮数,返回值 count 表示总分裂次数。 /// == File: time_complexity.cpp === /* 指数阶(循环实现) */ int exponential(int n) { int count = 0, base = 1; // 细胞每轮一分为二,形成数列 1, 2, 4, 8, . bbeceacf9704b74b4fc0281762/p43_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.cpp === /* 指数阶(递归实现) */ int expRecur(int n) { if (n == 1)0 码力 | 379 页 | 18.48 MB | 1 年前3
Hello 算法 1.1.0 Java版### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ : /// == File: time_complexity.java === /* 指数阶(循环实现) 98b1b13fcd2ab856aa4079966/p43_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.java === /* 指数阶(递归实现) */ int expRecur(int n) { if (n == 1) return expRecur(n - 1) + expRecur(n - 1) + 1; } 指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。 ### 5. 对数阶 $ O(\log n) $ 与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 n,由于每轮缩减到一半,因此循环次数是0 码力 | 378 页 | 18.47 MB | 2 年前3
Hello 算法 1.2.0 简体中文 Java 版count += 3; // 元素交换包含 3 个单元操作 } } } return count; } ### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ 。请注意,输入 n 表示分裂轮数,返回值 count 表示总分裂次数。 /// == File: time_complexity.java === /* 指数阶(循环实现) */ int exponential(int n) { int count = 0, base = 1; // 细胞每轮一分为二,形成数列 1, 2, 4, 8, . 3654e16dd2f6e290b37b962a6/p43_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.java === /* 指数阶(递归实现) */ int expRecur(int n) { if (n == 1)0 码力 | 379 页 | 18.48 MB | 1 年前3
Hello 算法 1.1.0 TypeScript版### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ : /// == File: time_complexity.ts === /* 指数阶(循环实现) 6c73cc50ec70b41ac277c37aca/p43_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.ts === /* 指数阶(递归实现) */ function expRecur(n: number): number { return expRecur(n - 1) + expRecur(n - 1) + 1; } 指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。 ### 5. 对数阶 $ O(\log n) $ 与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 n,由于每轮缩减到一半,因此循环次数是0 码力 | 383 页 | 18.49 MB | 2 年前3
Hello 算法 1.1.0 C语言版### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ : /// == File: time_complexity.c ==== /* 指数阶(循环实现) a22c446764e080eb8239f06821c/p43_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.c === /* 指数阶(递归实现) */ int expRecur(int n) { if (n == 1) return expRecur(n - 1) + expRecur(n - 1) + 1; } 指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。 ### 5. 对数阶 $ O(\log n) $ 与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 n,由于每轮缩减到一半,因此循环次数是0 码力 | 391 页 | 18.51 MB | 2 年前3
Hello 算法 1.0.0 Golang版### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ : /// == File: time_complexity.go === /* 指数阶(循环实现) 4b59465ff9d753a268eab4c5b5/p42_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.go === /* 指数阶(递归实现)*/ func expRecur(n int) int { if n == return expRecur(n - 1) + expRecur(n - 1) + 1 } 指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。 ### 5. 对数阶 $ O(\log n) $ 与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 n,由于每轮缩减到一半,因此循环次数是0 码力 | 382 页 | 17.60 MB | 2 年前3
Hello 算法 1.0.0 Java版### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ : /// == File: time_complexity.java === /* 指数阶(循环实现) 591a095bd526fd7d44c1e1b95/p42_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.java === /* 指数阶(递归实现) */ int expRecur(int n) { if (n == 1) return expRecur(n - 1) + expRecur(n - 1) + 1; } 指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。 ### 5. 对数阶 $ O(\log n) $ 与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 n,由于每轮缩减到一半,因此循环次数是0 码力 | 376 页 | 17.59 MB | 2 年前3
Hello 算法 1.0.0 JavaScript版### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ : /// == File: time_complexity.js === /* 指数阶(循环实现) 79dbbac004f6c01882797b791c/p42_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.js === /* 指数阶(递归实现) */ function expRecur(n) { if (n === 1) return expRecur(n - 1) + expRecur(n - 1) + 1; } 指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。 ### 5. 对数阶 $ O(\log n) $ 与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 n,由于每轮缩减到一半,因此循环次数是0 码力 | 376 页 | 17.57 MB | 2 年前3
Hello 算法 1.0.0 C语言版### 4. 指数阶 $ O(2^{n}) $ 生物学的“细胞分裂”是指数阶增长的典型例子:初始状态为1个细胞,分裂一轮后变为2个,分裂两轮后变为4个,以此类推,分裂n轮后有 $ 2^{n} $ 个细胞。 图 2-11 和以下代码模拟了细胞分裂的过程,时间复杂度为 $ O(2^{n}) $ : /// == File: time_complexity.c ==== /* 指数阶(循环实现) 668a983de07420b0371bbb818f2/p42_1.jpg) 图 2-11 指数阶的时间复杂度 在实际算法中,指数阶常出现于递归函数中。例如在以下代码中,其递归地一分为二,经过 n 次分裂后停止: /// == File: time_complexity.c === /* 指数阶(递归实现) */ int expRecur(int n) { if (n == 1) return expRecur(n - 1) + expRecur(n - 1) + 1; } 指数阶增长非常迅速,在穷举法(暴力搜索、回溯等)中比较常见。对于数据规模较大的问题,指数阶是不可接受的,通常需要使用动态规划或贪心算法等来解决。 ### 5. 对数阶 $ O(\log n) $ 与指数阶相反,对数阶反映了“每轮缩减到一半”的情况。设输入数据大小为 n,由于每轮缩减到一半,因此循环次数是0 码力 | 390 页 | 17.63 MB | 2 年前3
共 507 条
- 1
- 2
- 3
- 4
- 5
- 6
- 51













