zoukankan      html  css  js  c++  java
  • 算法的时间复杂度示例

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

    【效果图】

    【代码】

    # 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)))
  • 相关阅读:
    支付宝校园一卡通充值服务体验
    商品筛选导航菜单亮点欣赏
    手机QQ v4.2 有感
    因所缺,而所需——互联网应用的开发方向
    浅谈 css3 box盒子模型以及box-flex的使用
    浅谈stylus与sass的对比
    css3 transfrom使用以及其martix(矩阵)属性与其它属性的关系
    js命名空间
    公用的stringUtil工具
    js 实现angylar.js view层和model层双绑定(改变view刷新 model,改变model自动刷新view)
  • 原文地址:https://www.cnblogs.com/hhh5460/p/4391340.html
Copyright © 2011-2022 走看看