码迷,mamicode.com
首页 > 编程语言 > 详细

算法的时间复杂度示例

时间:2015-04-04 01:15:11      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

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

【效果图】

技术分享

【代码】

# 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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!