清华大学数据结构学习小结 第一章

1.Max2二分递归的最差情况

  • 如下图所示,最差的情况计算为 T ( n ) = 5 n / 3 − 2 T(n)=5n/3-2 T(n)=5n/32,进一步计算,最好的情况应该是 T ( n ) = 3 / 2 n − 2 T(n)=3/2n-2 T(n)=3/2n2
    在这里插入图片描述- 我个人理解的计算过程如下:

    1. 两边加2,凑成等比数列;
      T ( n ) + 2 = 2 ( T ( n / 2 ) + 2 ) T(n)+2=2(T(n/2)+2) T(n)+2=2(T(n/2)+2)
    2. 最差的情况是,每个递归基均是3个元素,且每次均需要比较3次,即 T ( 3 ) = 3 T(3)=3 T(3)=3
    3. 根据结果反推,可知:
      T ( n ) + 2 = 2 log ⁡ 2 n / 3 ( T ( 3 ) + 2 ) T(n)+2=2^{\log_{2}{n/3}}(T(3)+2) T(n)+2=2log2n/3(T(3)+2)
      其中,系数 2 log ⁡ n / 3 2^{\log{n/3}} 2logn/3我个人是这样理解的:
      假设 T ( n ) + 2 = 2 H ( T ( 3 ) + 2 ) T(n)+2 =2^H(T(3)+2) T(n)+2=2H(T(3)+2),这里的 H H H为一共向下递归了 H H H层。根据2所述,最差的情况均用到了 T ( 3 ) = 3 T(3)=3 T(3)=3这个递归基,可以理解为递归至最底层时每组的元素必定是3个,将递归过程理解为一棵满二叉树,如下图,其中假设的层数H就是这个系数,因此: H = log ⁡ 2 n / 3 H=\log_{2}{n/3} H=log2n/3
      在这里插入图片描述想通了这一点,剩下的就是做代数运算了,
      T ( n ) = 5 n / 3 − 2 T(n)=5n/3-2 T(n)=5n/32
  • 对于最好的情况,每组递归基都是使用 T ( 2 ) = 1 T(2)=1 T(2)=1,这样上述的 H H H变为 2 H = n / 2 2^H=n/2 2H=n/2。(此时递归到最底部每个分组中的元素个数为2,因此总组数应为 n / 2 n/2 n/2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值