1.時間復雜度(大O表示法):
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
(1)Python中常用數據結構的時間復雜度:
list內置操作的時間復雜度:
dict內置操作的時間復雜度:
(2)抽象數據類型(ADT: Abstract Data Type):
常用數據運算(5種):
增(插入)
刪(刪除)
改(修改)
查(查找)
排序
2. 棧的實現:
(1)棧的表現形式:
(2)棧的操作:
Stack(): 創建一個新的空棧
push(item):添加一個新元素item到棧頂
pop(): 彈出棧頂元素
peek(): 返回棧頂元素
is_empty(): 判斷棧是否為空
size(): 返回棧的元素個數
(3)實現棧:
1 class Stack(object): 2 """棧的實現""" 3 def __init__(self): 4 self.__list = [] 5 6 # 添加一個新元素item到棧頂 7 def push(self, item): 8 self.__list.append(item) 9 10 # 彈出棧頂元素 11 def pop(self): 12 return self.__list.pop() 13 14 # 返回棧頂元素 15 def peek(self): 16 if self.__list: 17 return self.__list[-1] 18 else: 19 return None 20 21 # 判斷棧是否為空 22 def is_empty(self): 23 return self.__list == [] 24 25 # 返回棧的元素個數 26 def size(self): 27 return len(self.__list) 28 29 30 if __name__ == "__main__": 31 s = Stack() 32 s.push(1) 33 s.push(2) 34 s.push(3) 35 s.push(4) 36 37 print(s.pop()) 38 print(s.pop()) 39 print(s.pop()) 40 print(s.pop())
運行結果: