Python資料結構

2021-09-22 14:08:25 字數 2060 閱讀 7881

16.2 演算法

16.3 查詢

16.4 排序

資料是指能夠輸入計算機中,由計算機所處理的元素結構是指資料之間的關係。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。其表現為計算機儲存,組織與處理資料的方式

常用的資料結構有:

說明:堆疊、佇列、鍊錶為線性儲存結構(線性表),即多個元素的有序序列。堆疊,隊列為操作受限的線性表。

陣列採用的是連續儲存的方式。通過其實位址與偏移量進行訪問其中的每個元素。陣列具有很好的隨機訪問特徵。

鍊錶儲存的資料元素稱為結點,在鍊錶中,各個結點是有序的。每個結點分為兩個部分:

堆疊(簡稱棧)是一種操作受限的線性表,只能在表頭增加或刪除元素。我們通常將棧使用豎直的方式來表示,因此,表尾稱為「棧頂」,表頭稱為「棧底」。

棧表現的特徵為後進先出。(lifo——last in first out)

佇列是一種操作受限的線性表。只能在隊尾增加元素,在隊頭刪除元素。

佇列表現的特徵為先進先出(fifo)。

當佇列的兩端都可以增加與刪除元素時,這種佇列稱為雙端佇列。雙端佇列可以同時實現佇列與堆疊的特徵。

樹是由結點集及連線每對結點的有向邊集組成。

如果存在有向邊連線a到b,則a為b的父節點(父親),b為a的子節點(孩子)。沒有父節點的結點稱為根,沒有子節點的結點稱為葉子。具有相同父節點的各結點稱為兄弟。

從根到某一節點經過的邊數稱為路徑長度。

二叉樹是一種樹形結構,其特徵是任意結點的孩子數不超過兩個。一棵二叉樹要麼為空,要麼由根、左子樹與右子樹組成(左右子樹可能為空)。

一棵深度(樹的層數)為m,且具有2m-1個結點的二叉樹稱為滿二叉樹。

當一棵二叉樹的所有結點編號(從上到下,從左到右進行)都與滿二叉樹一致時,該二叉樹稱為完全二叉樹。

樹的遍歷可以分為以下三種:

說明:遍歷二叉樹實際上是將樹的非線性結構進行線性化操作。

演算法為解決特定問題而給出的一種方案描述。

演算法效率的衡量:

時間負責度衡量的標準:

空間複雜度為演算法所需的儲存空間。

從前到後,順序進行查詢與關鍵字相符的元素。

時間複雜度:o(n)

選擇中間的元素,進行比較,每次排除一半的元素。

時間複雜度:o(logn)。

思考:折半查詢一定好於順序查詢嗎?

從穩定性上將,排序可以分為兩類:

氣泡排序是進行兩兩比較,每次選出乙個最大(小)元素,共執行n – 1次。

時間複雜度:最好:o(n) 平均:o(n2) 最差:o(n2)

穩定性:穩定。

每次選擇乙個最小(大)的元素,放入陣列的最前端。共執行n – 1次。

時間複雜度:最好:o(n2) 平均:o(n2) 最差:o(n2)

穩定性:不穩定。

從第二個元素開始,插入到現有陣列中,每個元素都保證插入之後,陣列是有序的。

時間複雜度:最好:o(n) 平均:o(n2) 最差:o(n2)

穩定性:穩定。

從插入排序時間複雜度可知,插入排序適合於基本有序的情況。

希爾排序(也稱縮小增量排序),根據一定的增量,將記錄分組,然後對每組進行插入排序。

因為在基本有序的情況下,插入排序的時間複雜度可以從o(n2)提公升至o(n),故希爾排序是插入排序的一種改進版。

希爾排序的最優增量序列是乙個非常複雜的問題,沒有固定的選擇原則,但通常情況下,應該令增量序列的每次減半,並且增量序列的最後乙個值一定是1。

時間複雜度:最好:與間隔相關 平均:與間隔相關 最差:o(n2)

穩定性:不穩定。

從陣列中選出乙個中心點(pivot),使得中心點左側的元素都小於(大於)該元素,中心點右側的元素都大於(小於)該元素。然後針對中心點分割的這兩個區間,繼續執行遞迴的快速排序,直到整個陣列區間全部有序。

時間複雜度:最好:o(nlogn) 平均:o(nlogn) 最差:o(n2)

穩定性:不穩定。

歸併排序為將兩個有序的資料集合並成乙個有序的資料集。

最好:o(nlogn) 平均:o(nlogn) 最差:o(nlogn)

空間複雜度:o(n)

穩定性:穩定

python資料結構

資料結構是一種結構,它們用以把一些資料儲存在一起。在python中有三種內建的資料結構 列表 list 元組 tuple 字典 dictionary 列表由一對方括號括起來,其中的專案之間以逗號分隔。你可以在列表中增加 刪除 查尋專案。示例如下 python using list.py 這兒有 4 ...

python 資料結構

刪除元素 remove,pop,del set是乙個無序的,不重複的元素集合 set中每個元素都是可雜湊的,但是set不是可雜湊的。相對應的frozenset,可hash,可以作為keys存在於dict中 支援 x in set,len set for x in set,不支援slice等序列操作 ...

python 資料結構

變數是只不過保留的記憶體位置用來儲存值。這意味著,當建立乙個變數,那麼它在記憶體中保留一些空間a abc 1.在記憶體中建立了乙個 abc 的字串 2.在記憶體中建立了乙個名為a的變數,並把它指向 abc a abc b a a xyz a abc 直譯器建立了字串 abc 和變數a,並把a指向 a...