出一道题 : 二分法 是 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 ,  那么, 最后一次 二分 就可以,  比 三分 少一次 操作,

 

考虑了这些,   二分法 和 三分法 的 时间复杂度 如何 ?   大家 可以 自己 算算  。

 

 

 

 

 

posted on 2020-09-25 21:47  凯特琳  阅读(1022)  评论(0编辑  收藏  举报

导航