數據結構之順序表

順序表

在程序中,常常須要將一組(一般是同爲某個類型的)數據元素做爲總體管理和使用,須要建立這種元素組,用變量記錄他們,傳進傳出函數等。一組數據中包含的元素個數可能發生變化(能夠增長或刪除元素)對於這種需求,最簡單的解決方案是將這樣一個元素當作一個序列,用元素在序列裏的位置和順序,表示實際應用中的某種有意義的信息,或者表示數據之間的某種信息。這樣一組序列元素的組織形式,咱們能夠將其抽象成線性表。一個線性表是某類元素的一個集合,還記錄着元素之間的一種順序關係。html

 

實際存儲方式

1.  順序表: 將元素順序地存放在一塊連續的存儲區裏,元素間的順序關係由它們的存儲順序天然表示函數

2. 鏈表: 將元素存放在經過連接構造起來的一系列存儲塊中spa

 

順序表結構

 

兩種實現方式

一體式與分離式結構

 

順序表添加刪除元素

# 插入 # 1. 在尾部插入元素 時間複雜度O(1) # 2. 非保序(不常見),時間複雜度O(1) # 3.保存元素插入,時間複雜度O(n)


#刪除元素 # 1.刪除隊尾,時間複雜度O(1) # 2.非保序(不常見),時間複雜度O(1) 例如:拿最後一個填充 # 2.保序,時間複雜度O(n)
# Python中的順序表list和tuple 兩種類型採用了順序表實現。

# tuple是不可表類型,即不變的順序表

# list:分離式存儲,動態順序表

#元素外置,不一樣類型數據

# 一體式,分離式 存儲區擴充 # 一體式:數據區內存不足,從新申請內存空間,表頭,數據搬遷。舊順序表銷燬 # 新的表頭,順序表地址改變

# 分離式: # 更改表頭指向,指向新的內存空間,表頭沒變

元素存儲區替換

# 內存擴充時,策略 # 1. 每次擴充固定數目,如每次擴充增長10個元素未知,這種策略可稱爲線性增加 # 特色:節約空間,可是擴充頻繁,操做次數多 # 2. 每次擴充翻倍,如每次擴充一倍的存儲空間 # 特色:減小了擴充的執行的次數,但可能會耗費資源。以空間換時間,推薦的方式。

Python中的順序表

 

原文出處:https://www.cnblogs.com/donghaoblogs/p/10539590.htmlcode

相關文章
相關標籤/搜索