如何形象化的理解演算法?
意義
什麼是演算法分析?
引例:a+b+c = 1000 a^2 + b^2 = c^2 (a,b,c均為自然數),求出a,b,c可能的組合?
#view code法一: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:
(a,b,c)
#法二:
for a in range(0,1001):
for b in range(0,1001):
c = 1000-a-b
if a+b+c == 1000 and a**2+b**2 == c**2:
print(a,b,c)
如何評判程式的優劣?
時間複雜度
例一: 計算下列演算法的時間複雜度
defview codesumofn(n):
thesum =0
for i in range(1,n+1):
thesum +=i
return
thesum
print(sumofn(10))
#1+n+1 = n+2 ==> o(n)
例二:計算下列演算法的時間複雜度
a=5b=6c=10view codefor i in
range(n):
for j in
range(n):
x = i *i
y = j *j
z = i *j
for k in
range(n):
w = a*k + 45v = b*b
d = 33
#3 + n*n*3 + 2n + 1 ==> 3n**2+2n ==> 3n**2 ==> n**2 ==>o(n**2)
例:例項化乙個空列表,然後將0-n範圍的資料新增到列表中。(四種方式)
from timeit importview codetimer
deftext01():
alist =
for i in range(1000):
return
alist
def
text02():
alist =
for i in range(1000):
alist +=[i]
return
alist
def
text03():
alist = [ i for i in range(1000)]
return
alist
def
text04():
alist = list(range(1000))
return
alistif
__name__ == '
__main__':
t1 = timer('
text01()
',setup="
from __main__ import text01")
t_1 = t1.timeit(1000)
(t_1)
t2 = timer('
text02()
',setup="
from __main__ import text02")
t_2 = t2.timeit(1000)
(t_2)
t3 = timer('
text03()
',setup="
from __main__ import text03")
t_3 = t3.timeit(1000)
(t_3)
t4 = timer('
text04()
',setup="
from __main__ import text04")
t_4 = t4.timeit(1000)
(t_4)
#0.102241317647497
#0.09949069216443718
#0.0516077816489684
#0.019912033670678397
python資料分析與展示 一
本文是中國大學mooc中北京理工大學的python系列專題講座的python資料分析與展示的筆記 使用 matplotlib.pyplot是繪製各類視覺化的圖形命令子庫,相當於快捷方式 引入庫檔案 import matplotlib.pyplot as plt示例 import matplotlib...
Python資料分析與展示 一
摘要 有損的提取資料特徵 run 執行py程式 time statement 給出 執行時間 timeit statement 多次執行 給出平均時間 高維資料 字典型別或者資料表示格式 dict 國際公認資料表示格式 json xml yaml import numpy as np defnpsu...
Python資料分析與處理 一
目錄 前言 為了幫助廣大考生和家長了解高考歷年的錄取情況,很多 都彙總了各省市的錄取控制分數線,為廣大考生填報志願提供參考。因受多種因素影響,每年的分數線或多或少會有一些變動。採集北程式設計客棧京2006 2019年的資訊。使用python的pandas庫完成以下資料分析。包含三部分內容 從 爬取,...