1 什麼是時間複雜度?
演算法的執行效率
演算法的執行時間與演算法的輸入值的關係
2 大o表示法
def
test
(num)
: total=0;
#執行時間a
for i in
range
(num)
:#單個執行時間b,一共num個b num*b
total +=i;
#單個執行時間c
return total
總共執行性時間 a+numb+c
由於 a,c與numb之間時間差之太大,所以可以看成執行時間=num*b,記作o(n)
3 案例分析
o(1)
def
01(num)
: i=num
j=num*
2#a+b,與num無關
return i+j
o(logn)
def
ologn
(num)
: i=1#a
while
(i: i=i*
2#執行log2 n次,一次b
return i
#總共時間 a+log2 n*b,可看做o(logn)
o(m+n)
def
omn(num1,num2)
: total=
0for i in
range
(num1)
:m*b
total+=i
for j in
range
(num2)
:n*b
total+=j
return total
o(nlogn)
def
onlogn
(num1,num2)
: total=
0 j=
0for i in
range
(num1)
:while
(j: total+=i+j
j=j*
2return total
o(n^2)
def
on2(num)
: total=
0for i in
range
(num)
:for j in
range
(num)
: total+=i+j
return total
重點看迴圈
4時間複雜度對比
o(1)1 什麼是空間複雜度?
演算法的儲存空間與輸入值之間的關係
先看下面兩個**
def
test1
(num)
: total=
0for i in
range
(num)
: total+=i
return total
deftest2
(num)
: array=
for num in nums:
return array
首先for迴圈是不佔空間的,只有變數佔空間
test1就是乙個int 型total只佔乙個int空間所以
空間複雜度o(1)
test2 裡有乙個陣列array,那麼這個陣列會占用n個空間,故他的空間複雜度為o(n)
空間複雜度取決於(1)變數型別(2)遞迴棧
常見空間複雜度 o(1),o(n),o(n ^2)(二維陣列)
資料結構之複雜度分析
目錄 1 為什麼需要複雜度分析?2 大o複雜度表示法 3 時間複雜度 3.1 只關注迴圈執行次數最多的一段 3.2 總的複雜度等於量級最大的那段 的複雜度 加法法則 3.3 巢狀 的複雜度等於巢狀內外 複雜度的乘積 乘法法則 3.4 時間複雜度 4 空間複雜度 5 時間複雜度擴充套件 網上一直有乙個...
資料結構時間複雜度分析
由於疫情原因,沒辦法去學校,資料結構也是看了很多遍,但知識點還是很容易忘,所以就用部落格的方式來記錄。對於一般演算法的時間複雜度,一般直接找到它的迴圈的次數即可,例 if a b else 對 a b 情況,最外層執行n 1次,內層執行最大執行次數為n 1 當i 0 時,所以o n n 對 a b ...
資料結構 複雜度分析(上)
1.資料結構和演算法本身解決的是 快 和 省 的問題,即如何讓 執行得更快,如何讓 更省儲存空間。執行效率是演算法乙個非常重要的考量指標。2.因此需從執行時間和占用空間兩個維度來評估資料結構和演算法的效能。3.分別用時間複雜度和空間複雜度兩個概念來描述效能問題,二者統稱為複雜度。4.複雜度描述的是演...