常用資料結構縱觀

2021-07-05 03:37:31 字數 1960 閱讀 2030

從學校開始到現在學習資料結構也有好久了,現在感覺需要總結一下

先總結一下

排序:

氣泡排序:

時間複雜度

平均情況:o(n^2)       最好情況:o(n)      最壞情況:o(n^2)

空間複雜度:o(1)

穩定性:穩定

簡單選擇排序:

時間複雜度

平均情況:o(n^2)       最好情況:o(n^2)      最壞情況:o(n^2)

空間複雜度:o(1)

穩定性:穩定

直接插入排序:

時間複雜度

平均情況:o(n^2)       最好情況:o(n)      最壞情況:o(n^2)

空間複雜度:o(1)

穩定性:穩定

希爾排序:

時間複雜度

平均情況:o(nlogn)~o(n^2)       最好情況:o(n^1.3)      最壞情況:o(n^2)

空間複雜度:o(1)

穩定性:不穩定

堆排序:

時間複雜度

平均情況:o(nlogn)       最好情況:o(nlogn)      最壞情況:o(nlogn)

空間複雜度:o(1)

穩定性:不穩定

歸併排序:

時間複雜度

平均情況:o(nlogn)        最好情況:o(nlogn)       最壞情況:o(nlogn)

空間複雜度:o(n)

穩定性:穩定

快速排序:

時間複雜度

平均情況:o(nlogn)        最好情況:o(nlogn)       最壞情況:o(n^2)

空間複雜度:o(logn) ~ o(n)

穩定性:不穩定 

其中,冒泡  簡單選擇  直接插入屬於簡單演算法,希爾  堆  歸併  快速屬於改進演算法。希爾排序相當於直接插入排序的公升級,它們同屬於插入排序類,堆排序相當於簡單選擇排序的公升級,他們同屬於選擇排序類。而快速排序其實就是氣泡排序的公升級,它們都屬於交換排序類。

順序表查詢:很簡單就是從開頭找到最後就行了。一般表都是無序的,所以時間複雜度就是o(1) ~ o(n)

有序表查詢:

折半查詢:mid = (low + high)/2

插值查詢: mid = low + (high - low)*(key - a[low])/(a[high] - a[low])

斐波那契查詢:mid = low + f[k - 1] - 1 (利用了斐波那契陣列的**分割原理來實現的。)

三種有序表的查詢本質上是分隔點的選擇不同,各有各自的應用場合,在實際開發中要根據實際情況而定,但他們的平均時間複雜度均為o(logn)。

線性索引查詢

稠密索引

分塊索引(塊內無序,塊間有序)

倒排索引(根據關鍵字索引)

平衡二叉樹:

平衡二叉樹是一種二叉排序樹,其中每乙個節點的左子樹和右子樹的高度差至多等於1.

二叉排序樹:

二叉排序樹,又稱為二叉查詢樹。它或者是一顆空樹,或者是具有下列性質的二叉樹:

若它的左子樹不空,則左子樹上所有結點的值均小於它的根節點的值;

若它的右子樹不空,則右子樹上所有結點的值均大於它的根節點的值;

它的左右子樹也分別為二叉排序樹。

平衡二叉樹的查詢 插入 刪除的時間複雜度均為o(logn)

b樹用於記憶體和外存之間的訪問而專門設計的。

哈係表的方法實質上就是根據一定的方法去最有可能的地方去找人。比如找學生一定去學校啊,找警察要去警局。常用方法是:

直接定址法

數字分析法

平方取中法

摺疊法除留餘數法

隨機數法

處理哈系衝突的方法:

再哈繫法:需要多準備幾個哈系函式。

公共溢位區法:將衝突的都放在乙個公共的地方。

單鏈表  迴圈鍊錶   雙向鍊錶

棧  佇列  迴圈佇列 

常用資料結構

文章參考 資料結構 c語言版 嚴蔚敏 線性表 有頭有尾,中間節點有前驅有後繼 定義 一組連續的儲存單元依次儲存線性表的資料元素。定長順序表 typedef struct sqlist psqlist 不定長順序表 typedef struct dsqlist dsqlist,pdsqlist 單鏈表...

常用資料結構

function delete array element arr,pos for i pos 1 i length 1 i array pop arr return arr pos 3 echo 除第位置上的元素後 echo implode delete array element arr,pos...

常用資料結構

基本資料結構 邏輯 集合,線性結構,樹形結構,圖形結構 基本資料結構 物理 順序,鏈式,索引,雜湊。陣列,棧,鍊錶,圖,雜湊表,對列,樹,堆 陣列 在記憶體中連續儲存多個元素的結構,在記憶體中的分配是連續,通過陣列下標運算元組元素 建立陣列 int a int a new int 3 int a n...