出一道题 : 二分法 是 n 分法 中 最快 的 吗 ?
二分法 是 n 分法 中 最快 的 吗 ? 用 数学 表达 :
n 、N 是 自然数, n >= 2, N >= n , 这 称为 条件 1 。
二分法 的 时间复杂度 大概 可以 表示 为 将 N 二分 到 小于等于 1 的 时间复杂度, 大概 可以写成 O2( N ) = 2 * log ﹙2﹚ N ,
n 分法 的 时间复杂度 大概 可以 表示 为 将 N n 分 到 小于等于 1 的 时间复杂度, 大概 可以写成 On( N ) = n * log ﹙n﹚ N ,
log ﹙2﹚ N 表示 2 为 底, N 为 真数 的 对数,
log ﹙n﹚ N 表示 n 为 底, N 为 真数 的 对数 。
试证明, 对于 满足 条件 1 的 任意 的 n 、N , n != 2 , 2 * log ﹙2﹚ N < n * log ﹙n﹚ N 。
但, 实际上 作了 一下 计算, 发现 三分法 才是 最快的, 二分法 次之, 四分法 和 二分法 一样快 。
好吧, 那就 证明 三分法 是 最快的 吧 ……
三分法 的 时间复杂度 O3( N ) = 3 * log ﹙3﹚ N , 试证明, 对于 满足 条件 1 的 任意 的 n 、N , n != 3 , 3 * log ﹙3﹚ N < n * log ﹙n﹚ N 。
也可以 证明 二分法 是 第二快 的 。
试证明,
1 3 * log ﹙3﹚ N < 2 * log ﹙2﹚ N
2 对于 满足 条件 1 的 任意 的 n 、N , n >= 5 , 2 * log ﹙2﹚ N < n * log ﹙n﹚ N 。
也可以证明 四分法 和 二分法 一样快 。
四分法 的 时间复杂度 是 O4( N ) = 4 * log ﹙4﹚ N , 试证明, 当 N > 0 时, 4 * log ﹙4﹚ N = 2 * log ﹙2﹚ N 。
考虑到 实际操作 的 离散性, log ﹙2﹚ N 和 log ﹙3﹚ N 的 小数 部分 应 看作 1, 并 加 到 整数 部分, 这样一来, 二分法 和 三分法 谁 快 ?
进一步, 对于 三分法, 如果 最后一次 的 被分割数 只 需要 二分 就可以 小于等于 1 , 那么, 最后一次 二分 就可以, 比 三分 少一次 操作,
考虑了这些, 二分法 和 三分法 的 时间复杂度 如何 ? 大家 可以 自己 算算 。