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


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

      運行結果:

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM