//建構函式:
vector
(int c=default_capacity,
int s =
0, t v=0)
for(_size=
0;_size
]=v)
}//析構函式:
~vector()
//copy_from函式的實現:
template
<
typename t>
void
copy_from
(t const
*a,rank lo,rank hi)
向量的加倍式擴容的分攤成本為o(1
注:圖中每次只插入乙個元素,連續插入2^m個元素
分攤分析:對資料結構實時連續的足夠多次的操作,所需的成本分攤到單次操作
方法:從第i個元素開始,往後查詢首個不相等元素第j,將第j個元素移動到i+1位,然後再從第i+1位開始往復,直到j=_size,此時向量長度為i+1,重複元素個數為j-i
語義約定:有便於有序向量自身的維護:v.insert(1+v.search(e),e)
1)即便新元素查詢失敗,也應該給出新元素適當的插入位置
2)若允許重複元素,則每一組重複元素也需按照插入次序排序
約定:在有序向量v[lo,hi)中,確定不大於e的最後乙個元素,取該元素的後一位作為插入位置
若e過小,則返回lo-1;若e過大,則返回hi-1
;}複雜度分析:先行遞迴t(n
)=t(
n/2)
+o(1
)t(n)=t(n/2)+o(1)
t(n)=t
(n/2
)+o(
1), o (1
)o(1)
o(1)
表示每次只需要進行1到2次的常數次比較
遞迴跟蹤:軸總取中點,各例項遞迴耗時o(1),總遞迴數量log
nlogn
logn
,所以遞迴深度o(l
ogn)
o(logn)
o(logn
)考察關鍵碼的比較次數,即查詢長度(search lenght):
查詢成功和失敗的兩種情況平均查詢長度大致為o
往左的時候只需要一次對比,往右需要兩次,因為程式中是先對比左邊,若不滿足再對比右邊的。最底層(d)表示失敗的情況
資料結構 第二章向量錯題整理
disorder 返回值是相鄰逆序對個數。相鄰逆序對即兩個相鄰的元素且i j。而逆序數是逆序對的個數,並不要求二者相鄰 作為乙個函式物件的類 它必須顯式定義operator 對於函式物件來說,是用於執行函式呼叫的操作符。對於二分查詢版本c,當e對於規模為n的向量,二分查詢版本a和b的最優時間複雜度分...
第二章 資料結構 二
知識點 trie樹 並查集,堆的操作 高效地儲存和查詢字串集合的資料結構 const int n 100010 int son n 26 cnt n idx 插入 void insert char str cnt p 以這個點結尾的字元數 查詢 intquery char str return cn...
資料結構 第二章總結
線性表是由n 0 個資料元素組成的有限序列。我們學習了線性表上定義的基本運算 有構造空表 initlist l 求表長 listlength l 取結點 getnode l i 查詢 locatenode l x 插入 insertlist l x,i 刪除 delete l i 還學習了順序表 單...