您好,登錄后才能下訂單哦!
本篇內容主要講解“Python數據結構的時間復雜性是什么意思”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python數據結構的時間復雜性是什么意思”吧!
文章目的
本文介紹了CPython中數據結構的關鍵操作的Big-O表示法。 big-O表示法是一種衡量操作時間復雜度的方法。
1.讓我們了解大O符號的含義是什么?
在算法中執行許多操作。 這些操作可能包括遍歷集合,復制項目或整個集合,將項目追加到集合中,在集合的開始或結尾處插入項目,刪除項目或更新集合中的項目。
Big-O衡量算法運算的時間復雜度。 它測量算法計算所需運算所需的時間。 盡管我們也可以測量空間復雜度(算法占用多少空間),但本文將重點介紹時間復雜度。
用最簡單的術語來說,Big O表示法是一種基于輸入大小(稱為n)來衡量操作性能的方法。
2. Big O表示法有何不同?
我們需要熟悉許多常見的Big O符號。
讓我們考慮n為輸入集合的大小。 就時間復雜度而言:
O(1):無論您的集合有多大,執行操作所花費的時間都是恒定的。 這是恒定的時間復雜度符號。 這些操作盡可能快。 例如,檢查集合內部是否有任何項目的操作是O(1)操作。
O(log n):當集合的大小增加時,執行操作所花費的時間對數增加。 這是對數時間復雜度表示法。 潛在優化的搜索算法為O(log n)。
O(n):執行操作所需的時間與集合中的項目數成線性正比。 這是線性時間復雜度符號。 就性能而言,這介于兩者之間或中等。 作為一個實例,如果我們想對一個集合中的所有項目求和,那么我們將不得不遍歷該集合。 因此,集合的迭代是O(n)操作。
(n log n):執行某項操作的性能是集合中項目數量的擬線性函數。 這稱為準線性時間復雜度表示法。 優化排序算法的時間復雜度通常為n(log n)。
O(n平方):執行操作所需的時間與集合中項目的平方成正比。 這稱為二次時間復雜度表示法。
(n!):當在操作中計算集合的每個單個排列時,因此執行操作所需的時間取決于集合中項目的大小。 這稱為階乘時間復雜度表示法。 非常慢。
該圖像概述了Big-O符號。
O(1)很快。 O(n平方)很慢。 O(n!)非常慢。
大O符號是相對的。 大O表示法與機器無關,忽略常量,并且被包括數學家,技術人員,數據科學家等在內的廣泛讀者所理解。
最佳,平均,最差情況
當我們計算操作的時間復雜度時,我們可以根據最佳,平均或最壞情況產生復雜度。
最佳情況方案:顧名思義,這是當數據結構和集合中的項目以及參數處于最佳狀態時的方案。 例如,假設我們要在集合中找到一個項目。 如果該項目恰好是集合的第一項,那么這是該操作的最佳情況。
平均情況是根據輸入值的分布定義復雜度。
最壞的情況是可能需要一種操作,該操作需要在大型集合(例如列表)中找到位于最后一個項目的項目,并且算法會從第一個項目開始對集合進行迭代。
在本文的這一部分中,我將記錄CPython中的常見集合,然后概述它們的時間復雜性。
我將特別關注平均情況。
1.List
List是迄今為止Python中最重要的數據結構之一。 我們可以將列表用作堆棧(添加的最后一項是第一項)或隊列(添加的第一項是第一項)。 列表是有序且可變的集合,因為我們可以隨意更新項目。
讓我們回顧一下常見列表操作及其Big-O表示法
插入:Big-O表示法是O(n)
獲取項目:Big-O表示法為O(1)
刪除項目:Big-O表示法是O(n)
迭代:Big-O表示法是O(n)
獲得長度:Big-O表示法為O(1)
2.Set
集合也是Python中使用最廣泛的數據集合之一。 集合本質上是無序集合。 集合不允許重復,因此集合中的每個項目都是唯一的。 集合支持許多數學運算,例如聯合,差,集合的交集等。
讓我們回顧一下通用Set操作
檢查集合中的項目:Big-O表示法是O(1)
集合A與集合B的區別:大O表示法是O(A的長度)
集A和B的交集:大O表示法是O(A或B的長度的最小值)
集A和B的并集:相對于長度(A)+長度(B),它的Big-O表示法是O(N)
3.Dict 字典
最后,我想提供字典數據收集的概述。 字典是鍵值對集合。 鍵在字典中是唯一的,以防止項目沖突。 這是非常有用的數據收集。
字典由鍵索引,其中鍵可以是字符串,數字甚至是帶有字符串,數字或元組的元組。
我們可以對字典執行許多操作,例如存儲鍵的值,或基于鍵檢索項目,或遍歷項目等。
讓我們回顧一下常見的詞典時間復雜度:
在這里,我們認為該密鑰用于獲取,設置或刪除項目。
獲取項目:Big-O表示法為O(1)
設定項目:Big-O表示法是O(1)
刪除項目:Big-O表示法是O(1)
遍歷字典:Big-O表示法是O(n)
到此,相信大家對“Python數據結構的時間復雜性是什么意思”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。