1. 程式人生 > >1. 時間復雜度(大O表示法)以及使用python實現棧

1. 時間復雜度(大O表示法)以及使用python實現棧

font 刪除 obj ffffff style 分享 http n! name

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())

      運行結果:

      技術分享圖片

1. 時間復雜度(大O表示法)以及使用python實現棧