zoukankan      html  css  js  c++  java
  • 出一道题 : 二分法 是 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 ,  那么, 最后一次 二分 就可以,  比 三分 少一次 操作,

     

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

     

     

     

     

     

  • 相关阅读:
    我的2015年ccf的解答
    VS中出现“链接器工具错误,XXX工具模块对于SAFESEH映像是不安全的”的解决方法
    记录每次运行的时刻的小程序
    c语言中strcpy与strlen函数对字符串最后的''的处理
    windows8.1的启动目录的路径
    使用feof()判断文件结束时会多输出内容的原因
    [转]android sqlite db-journal文件产生原因及说明
    安卓备份 To Do(待办事项)的数据库
    下载YouTube视频的方法
    Firefox及我使用的firefox扩展
  • 原文地址:https://www.cnblogs.com/KSongKing/p/13732788.html
Copyright © 2011-2022 走看看