資料結構 第二章 向量 上

2021-10-04 09:48:17 字數 1888 閱讀 8688

//建構函式:

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 還學習了順序表 單...