0.算法的基本特點
0.有0個或多個輸入。
1.有1個或多個輸出
2.算法執行的步驟具有有窮性
3.每一步執行的語句所表達的含義是確定的
4.算法的設計思想一定是可行的
1.算法的衡量是用時間複雜度"大O表示"
因爲每臺機器執行的時間總是不同的,但是執行進本運算數量大體相同,爲了衡量這個大體相同的概念,我們引入時間複雜度,時間複雜度包括最優時間複雜度,最壞時間複雜度,平均時間複雜度,一般情況最先研究最壞情況複雜度(數據的順序是無序的)。
順序結構--------複雜度相加
循環結構--------複雜度相乘
分支結構--------複雜度在分支中最壞的情況
忽略常數項(O(1))
2.常見時間複雜度以及大小比較
常數項 --------O(1)
線性項 --------O(N)
平方項 ---------O(N²)
立方項 ---------O(N³)
對數項 ---------O(logN)
指數項 ---------O(a^N)
NlogN ----------O(NlogN)
3.timeit衡量python代碼的時間複雜度
timeit衡量時間
from timeit import Timer
def t1():
l1 = []
for i in range(1000):
l1.append(i)
text_time1 = Timer("t1", "from __main__ import t1")
print("append_time:{}".format(text_time1.timeit(1000)))
append_time:1.3199999999990997e-05
4.timeit衡量列表的複雜度