《编程导论》9.3.2 算法复杂度_对数复杂度(辅助学习的笔记~)

这里我有十分不能理解的地方,如果有大神明白的请务必求大神留言指点!谢谢!

#9.3.2 Logarithmic Complexity(对数复杂度)

def intToStr(i):
    """ 假定i是非负整数
        i返回i的十进制字符串表示"""
    digits = '0123456789'
    if i == 0:
        return '0'
    result = ''
    while i > 0:
        result = digits[i%10] + result#运算符%,是取除法中的余数的作用
        #但除数小于被除数时,余数也必须为正,如:2%10 = 2,这里用了零除
        i = i//10
    return result

def addDigits(n):
    """ 假定n是非负整数
        返回n所有数字的和"""
    stringRep = intToStr(n)
    val = 0
    for c in stringRep:
        val += int(c)
    return val
    #很容易可以看出,for循环会执行O(len(stringRep))次
    #(不懂的地方是:)如果假设可以在常数时间内把一个字符转换成数字,
    #那程序的运行时间就会和O(log(n)) + O(log(n))成正比
    #因此复杂度是O(log(n))(?这里真不懂...)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值