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

     

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

     

     

     

     

     

  • 相关阅读:
    【codeforces 766C】Mahmoud and a Message
    【codeforces 766D】Mahmoud and a Dictionary
    【b704 && BZOJ 1999】树网的核
    优秀Java程序员必须了解的GC工作原理
    Apparatus, system, and method for automatically minimizing real-time task latency and maximizing non-real time task throughput
    NODEJS网站
    day63-webservice 01.cxf介绍
    04.webservice客户端调用
    03.WSDL分析
    02.socket实现远程调用
  • 原文地址:https://www.cnblogs.com/KSongKing/p/13732788.html
Copyright © 2020-2023  润新知