算法的时间复杂度示例

简介: 本文是学习数据结构的笔记。 【效果图】 【代码】 # example.py # 算法时间复杂度示例 def func_01(n): ''' 时间复杂度O(Log(Log(N))) ''' import math i = n count = 0 while i > 1: i = round(math.

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

【效果图】

【代码】

# 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)))

 

目录
相关文章
|
7月前
|
人工智能 算法 测试技术
【动态规划】【二分查找】C++算法 466 统计重复个数
【动态规划】【二分查找】C++算法 466 统计重复个数
|
2月前
|
搜索推荐 算法
插入排序算法的平均时间复杂度解析
【10月更文挑战第12天】 插入排序是一种简单直观的排序算法,通过不断将未排序元素插入到已排序部分的合适位置来完成排序。其平均时间复杂度为$O(n^2)$,适用于小规模或部分有序的数据。尽管效率不高,但在特定场景下仍具优势。
|
2月前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
47 4
|
7月前
|
搜索推荐 算法 索引
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
192 4
|
7月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
46 8
|
7月前
|
算法 搜索推荐 数据挖掘
时间复杂度、空间复杂度、算法的稳定性说明以及示例
时间复杂度、空间复杂度、算法的稳定性说明以及示例
69 0
|
7月前
|
存储 算法 搜索推荐
【算法训练-排序算法 二】【快速排序】数组中的第K个最大元素、最小的K个数
【算法训练-排序算法 二】【快速排序】数组中的第K个最大元素、最小的K个数
70 0
|
存储 编解码 移动开发
【算法】直接选择排序解析
直接选择排序是指每次都从剩余数据中选出最大或者最小的,将其排在已经排好的有序表后面。
229 0
【算法】直接选择排序解析
|
算法 Python
算法与python:使用高斯消元法计算行列式的值,并分析时间复杂度
算法与python:使用高斯消元法计算行列式的值,并分析时间复杂度
214 0
|
机器学习/深度学习 存储 人工智能
【算法总结】数组
集合并不直接存在于编程语言中。但是,实际编程语言中的很多数据结构,就是在集合的基础上添加了一些规则形成的
186 0