1. 程式人生 > >向量(vector)

向量(vector)

數組 抽象數據類型 實現 find 組元 pan 結構 遞增 線性

1.接口與實現

1.1

抽象數據類型:一組數據模型上定義的一組操作 數據類型是(char、int等)

數據結構:基於特定語言的,實現ADT的一整套算法。

1.2

向量:向量是數組的抽象與泛化,由一組元素按線性次序封裝而成。

特點:1.各元素與(0,n)內的秩一一對以應

   2.元素的類型不限於基本類型

   3.操作、管理更加簡潔、統一與安全

   4.可更為便捷的參與復雜數據結構的定制與實現

1.3

向量的操作

insert(0,9):在0的位置插入9

put(1,2)修改1位置上的元素為2

get(2)獲取2上的元素

remove(2)移除位置2上的元素並返回

size()向量裏面元素的個數

disordered()判斷向量裏面無序的數據對

find(5)找有沒有5的元素 找到返回其下標 未找到則返回-1

sort()對裏面的元素進行排序

search(9)查找向量裏面是否有9找到則返回下標,未找到則返回不超過9的最大的那個元素的下表(順序的向量)

uniquify()剔除掉向量裏面重復的元素

2.可擴充向量

2.1 靜態空間管理

開辟內部數組_elem[]並使用一段連續的物理空間

缺點:

會產生上溢合下溢

2.2 動態空間管理

在即將發生上溢時適當的擴大數組的容量

2.3 擴容的策咯

容量遞增策略(2 4 6 8 10 12)累計增容費時間(O(n2)) 分攤增容時間(O(n))

加倍試策略(2 4 8 16)累計增容費時間(O(n)) 分攤增容時間(O(1))

2.4 分攤復雜度

平均復雜度:根據數據結構各種操作出現的概率分布,將對應的成本加權平均

分攤談復雜度:對數據結構連續的實施足夠多次操作,所需總體成本分攤至單次操作

3.無序向量

4.有序向量

向量(vector)