python演算法與資料結構(9)棧溢位和時間複雜度

2021-10-03 12:43:40 字數 717 閱讀 9700

1 棧溢位

def

infinite_fib

(n):

return infinite_fib(n-1)

+ infinite_fib(n-2)

if __name__ ==

'__main__'

: infinite_fib(

10)

因為無窮遞迴棧溢位報錯:recursionerror: maximum recursion depth exceeded2 時間複雜度

2n^2

n+n^2

1常用時間複雜度

1 常量時間 一次賦值

logn 對數時間 折半查詢

n 線性時間 線性查詢

nlogn 對數線性時間 快速排序

n^2 平方 兩重迴圈

n^3 立方 三重迴圈

2^n 指數 遞迴求斐波那契數列、

n! 階乘 旅行商問題

2空間複雜度

原地操作兩個位置的元素,

有些操作需要申請額外空間完成演算法。

布隆過濾

3時間換空間,空間換時間

python資料結構與演算法 棧

逆波蘭表示式 reverse polish notation 有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。輸入 2 1 3 輸出 9 解釋 2 1 3 9 分析 棧 遍歷陣列,逐漸壓入棧中,如果遇到運算字元,則彈出棧頂兩個元素,之後將計算結果再壓入棧中 class solu...

python資料結構與演算法 棧

棧 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 peek 返回棧頂元素 is empty 判斷棧是否為空 size 返回棧的元素個數 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 p...

資料結構與演算法《棧》

概念 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使...