Python数据结构与算法-Day1-引入

文章目录

  • 引入
    • 算法的概念
    • 算法的五大特性
    • 算法效率衡量
      • 时间复杂度与“大O记法”
      • 最坏时间复杂度
      • 时间复杂度的基本计算原则
      • 常见时间复杂度
    • Python内置类型性能分析
      • timeit模块
      • list的操作测试
      • list内置操作的时间复杂度
      • dict内置操作的时间复杂度
    • 数据结构
      • 概念
      • 算法与数据结构的区别
      • 抽象数据类型(Abstract Data Type)

引入

在这里插入图片描述
枚举法

for a in range(0,1001):
    for b in range(0, 1001):
        for c in range(0, 1001):
            if a+b+c==1000 and a**2 + b**2 == c**2:
                print("a,b,c:%d,%d,%d" % (a,b,c))


a,b,c:0,500,500
a,b,c:200,375,425
a,b,c:375,200,425
a,b,c:500,0,500

244s
改进

import time
start_time = time.time()
for a in range(0,1001):
    for b in range(0, 1001):
        c = 1000 - a - b
        if a**2 + b**2 == c**2:
            print("a,b,c:%d,%d,%d" % (a,b,c))
end_time = time.time()
print("times:%d" % (end_time-start_time))

a,b,c:0,500,500
a,b,c:200,375,425
a,b,c:375,200,425
a,b,c:500,0,500
times:1

算法的概念

Python数据结构与算法-Day1-引入_第1张图片

算法的五大特性

Python数据结构与算法-Day1-引入_第2张图片

算法效率衡量

时间复杂度与“大O记法”

Python数据结构与算法-Day1-引入_第3张图片

最坏时间复杂度

Python数据结构与算法-Day1-引入_第4张图片

时间复杂度的基本计算原则

Python数据结构与算法-Day1-引入_第5张图片

常见时间复杂度

Python数据结构与算法-Day1-引入_第6张图片
在这里插入图片描述

Python内置类型性能分析

timeit模块

Python数据结构与算法-Day1-引入_第7张图片

list的操作测试

def test1():
   l = []
   for i in range(1000):
      l = l + [i]
def test2():
   l = []
   for i in range(1000):
      l.append(i)
def test3():
   l = [i for i in range(1000)]
def test4():
   l = list(range(1000))

from timeit import Timer

t1 = Timer("test1()", "from __main__ import test1")
print("concat ",t1.timeit(number=1000), "seconds")
t2 = Timer("test2()", "from __main__ import test2")
print("append ",t2.timeit(number=1000), "seconds")
t3 = Timer("test3()", "from __main__ import test3")
print("comprehension ",t3.timeit(number=1000), "seconds")
t4 = Timer("test4()", "from __main__ import test4")
print("list range ",t4.timeit(number=1000), "seconds")

# ('concat ', 1.7890608310699463, 'seconds')
# ('append ', 0.13796091079711914, 'seconds')
# ('comprehension ', 0.05671119689941406, 'seconds')
# ('list range ', 0.014147043228149414, 'seconds')

list内置操作的时间复杂度

Python数据结构与算法-Day1-引入_第8张图片

dict内置操作的时间复杂度

Python数据结构与算法-Day1-引入_第9张图片

数据结构

概念

Python数据结构与算法-Day1-引入_第10张图片

算法与数据结构的区别

Python数据结构与算法-Day1-引入_第11张图片

抽象数据类型(Abstract Data Type)

Python数据结构与算法-Day1-引入_第12张图片

你可能感兴趣的:(Python数据结构与算法-Day1-引入)