算法的时间复杂度示例

本文是学习数据结构的笔记。

【效果图】

【代码】

复制代码
# example.py

# 算法时间复杂度示例


def func_01(n):
    ''' 时间复杂度O(Log(Log(N))) '''
    import math
    i = n
    count = 0
    while i > 1: 
        i = round(math.sqrt(i)) # 注意:sqrt(i)!
        count += 1
    return count

print('时间复杂度O(Log(Log(N))),N=2000000000000000000,循环{}次'.format(func_01(2000000000000000000)))




def func_02(n):
    ''' 时间复杂度O(Log(N)) '''
    i = n
    count = 0
    while i >= 1: 
        i = i // 2 # 注意:// 2!
        count += 1
    return count

print('时间复杂度O(Log(N)),N=100000000,循环{}次'.format(func_02(100000000)))





def func_03(n):
    ''' 时间复杂度O((Log(N))^2) '''
    i = 1
    count = 0
    while i <= n: 
        j = n
        while j > 0:
            j = j // 2 # 注意:// 2!
            count += 1
        i = i * 2 # 注意:* 2!
    return count

print('时间复杂度O((Log(N))^2),N=100000000,循环{}次'.format(func_03(100000000)))




def func_04_01(n):
    ''' 时间复杂度O(Sqrt(N)) '''
    i = s = 1
    count = 0
    while  s < n:
        i = i + 1
        s = s + i
        count += 1
    return count

print('时间复杂度O(Sqrt(N)),N=10000,循环{}次'.format(func_04_01(10000)))




def func_04_02(n):
    ''' 时间复杂度O(Sqrt(N)) '''
    i = 1
    count = 0
    while i * i < n:
        count = count + 1
        i = i + 1
    return count

print('时间复杂度O(Sqrt(N)),N=10000,循环{}次'.format(func_04_02(10000)))




def func_05(n):
    ''' 时间复杂度O(N) '''
    count = 0
    for i in range(1, n): 
        count += 1
    return count

print('时间复杂度O(N),N=100,循环{}次'.format(func_05(100)))




def func_06_01(n):
    ''' 时间复杂度O(N*Log(N)) '''
    count = 0
    for i in range(1, n): 
        j = 1
        while j <= n:
            j = j * 2 # 注意:* 2!
            count += 1
    return count

print('时间复杂度O(N*Log(N)),N=1000,循环{}次'.format(func_06_01(1000)))


def func_06_02(n):
    ''' 时间复杂度O(N*Log(N)) '''
    count = 0
    for i in range(1, n):
        j = 1
        while j < n:
            j = j + i # 注意: + i!
            count = count + 1
    return count

print('时间复杂度O(N*Log(N)),N=1000,循环{}次'.format(func_06_02(1000)))


def func_06_03(n):
    ''' 时间复杂度O(N*Log(N)) '''
    count = 0
    for i in range(1, n // 3): # 注意:// 3!
        j = 1
        while j <= n:
            j = j + 4 # 注意:+ 4!
            count = count + 1
    return count

print('时间复杂度O(N*Log(N)),N=1000,循环{}次'.format(func_06_03(1000)))




def func_07(n):
    ''' 时间复杂度O(N*(Log(N))^2) '''
    count = 0
    for i in range(1, n):
        j = 1
        while j <= n:
            k = 1
            while k <= n:
                count += 1
                k = k * 2 # 注意:* 2!
            j = j * 2 # 注意:* 2!
    return count

print('时间复杂度O((N*Log(N))^2),N=100,循环{}次'.format(func_07(100)))



def func_08(n):
    ''' 时间复杂度O(N^2) '''
    count = 0
    for i in range(n):
        for j in range(n):
            count += 1
    return count

print('时间复杂度O((N^2),N=100,循环{}次'.format(func_08(100)))



def func_09(n):
    ''' 时间复杂度O(N^3) '''
    count = 0
    for i in range(n):
        for j in range(n):
            for k in range(n):
                count += 1
    return count

print('时间复杂度O((N^3),N=50,循环{}次'.format(func_09(50)))
复制代码

 

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/4391340.html ,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值