数据算法和机构笔记(day1)

1.a+b+c=1000, a2+b2=c^2(a,b,c为自然数),求abc所有组合
枚举法
A (0,10001) B C
3个for 循环
算法计算的方法
实现的语言不重要 思想

2.算法的五大特性
有穷性 ,输入 输出, 有穷性, 确定性, 可行性
3.时间复杂度
执行时间反应算法效率
时间复杂度和“o”
每台机器执行 的总时间不同 执行的基本运算数量大体相同
Method1
T=1000100010002
T=2000
200020002
T=NNN2
T=N^3
2和 T=N^3*10一个数量级

n的三次方
T=N^32和 T1=N^3c
T是T1的渐进函数

4.最优时间复杂度 工作完成最少需要多少基本操作
最坏时间复杂度 工作完成最多需要多少基本操作
算法完成平均需要多少基本操作 平均时间复杂度
算法 首先关注最坏时间复杂度 然后 最优时间复杂度

5.基本操作 只有常数项 认为其时间复杂度 为O(i)
顺序结构 时间复炸度按加法计算
循环结构 时间复杂度按乘法计算
分支结构 时间复炸度 取最大值
判断一个算法效率的时候, 往往只需要关注操作数量的最高次项,其他次要项和常数项可以忽略
在没有特殊说明时候,我们所分析的算法的时间复杂度是指最坏时间复炸度
O(N^2) 第二个方法
6.常见的时间复杂程度
12 O(1)
2n+3 O(n)
3n^2+2n O(n^2)平方借
5log2n +29 O(log n)
2n+3nlog2n +19 O(n log n)
6n3+2n2+3n+2 O(N^3)
2^n O(2^n) 指数阶

7.代码执行时间测量模块timeit
l={}
li.append()
li.insert()
使用timeit模块
文件名不和包重合 abc模块

l={}

li.append()

li.insert()

from timeit import Timer

li1=[1,2]

li2=[23,11]

li=li1+li2

li=[for i in range(10000)]

li=list(range(10000))

def test1():
li=[]
for i in range(10000):
li.append(i)
def test2():
li=[]
for i in range(10000):
li+=[i]
def test3():
li=[i for i in range(10000)]
def test4():
li=list(range(10000))
def test5():
li=[]
for i in range(10000):
li.extend([i])
timer1=Timer(“test1()”,“from main import test1”)
print(“append:”, timer1.timeit(1000))
timer2=Timer(“test2()”,“from main import test2”)
print("+", timer2.timeit(1000))
timer3=Timer(“test3()”,“from main import test3”)
print("[i for i in range]:", timer3.timeit(1000))
timer4=Timer(“test4()”,“from main import test4”)
print(“list(range())”, timer4.timeit(1000))
timer5=Timer(“test5()”,“from main import test5”)
print(“extend”, timer5.timeit(1000))

####method 6
def test6():
li=[]
for i in range(10000):
li.append(i)
def test7():
li=[]
for i in range(10000):
li.insert(0,i)
timer6=Timer(“test6()”,“from main import test6”)
print(“append头”, timer6.timeit(1000))
timer7=Timer(“test7()”,“from main import test7”)
print(“append尾”, timer7.timeit(1000))

尾部添加快 li+=[i]和extend差不多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值