(1)最好情況時間複雜度:在最理想的情況下,執行這段**的時間複雜度
(2)最壞情況時間複雜度:在最糟糕的情況下,執行這段**的時間複雜度
(3)平均時間複雜度:加權平均時間複雜度或者期望時間複雜度
(4)均攤時間複雜度:對乙個資料結構進行一組連續操作中,大部分情況下時間複雜度都很低,只有個別情況下時間複雜度比較高,而且這些操作之間存在前後連貫的時序關係,這個時候,我們就可以將這一組操作放在一塊兒分析,看是否能將較高時間複雜度那次操作的耗時,平攤到其他那些時間複雜度比較低的操作上。在能夠應用均攤時間複雜度分析的場合,一般均攤時間複雜度就等於最好情況時間複雜度。均攤時間複雜度就是一種特殊的平均時間複雜度
例:分析下面add() 函式的時間複雜度
// 全域性變數,大小為10的陣列array,長度len,下標i。
int array[
]= new int[10
];int len =10;
int i =0;
// 往陣列中新增乙個元素
void
add(
int element)
// new_array複製給array,array現在大小就是2倍len了
array = new_array;
len =
2* len;
}// 將element放到下標為i的位置,下標i加一
array[i]
= element;
++i;
}
最好情況時間複雜度=o(1):
當i < len時, 即 i = 0,1,2,…,n-1的時候,for迴圈不執行,所以這n次的時間複雜度都是o(1);
最壞情況時間複雜度=o(n):
當i >= len時,for迴圈進行陣列的copy,所以只有這1次的時間複雜度是o(n);
平均情況時間複雜度=o(1):
1*(1/n+1)+1*(1/n+1)+…+1*(1/n+1)+n*(1/(n+1))=1
均攤時間複雜度=o(1)
資料結構之複雜度分析
目錄 1 為什麼需要複雜度分析?2 大o複雜度表示法 3 時間複雜度 3.1 只關注迴圈執行次數最多的一段 3.2 總的複雜度等於量級最大的那段 的複雜度 加法法則 3.3 巢狀 的複雜度等於巢狀內外 複雜度的乘積 乘法法則 3.4 時間複雜度 4 空間複雜度 5 時間複雜度擴充套件 網上一直有乙個...
資料結構時間複雜度分析
由於疫情原因,沒辦法去學校,資料結構也是看了很多遍,但知識點還是很容易忘,所以就用部落格的方式來記錄。對於一般演算法的時間複雜度,一般直接找到它的迴圈的次數即可,例 if a b else 對 a b 情況,最外層執行n 1次,內層執行最大執行次數為n 1 當i 0 時,所以o n n 對 a b ...
資料結構 複雜度分析(上)
1.資料結構和演算法本身解決的是 快 和 省 的問題,即如何讓 執行得更快,如何讓 更省儲存空間。執行效率是演算法乙個非常重要的考量指標。2.因此需從執行時間和占用空間兩個維度來評估資料結構和演算法的效能。3.分別用時間複雜度和空間複雜度兩個概念來描述效能問題,二者統稱為複雜度。4.複雜度描述的是演...