資料結構與演算法之美-02複雜度分析(下)
複雜度分析(下):淺析最好、最壞、平均、均攤時間複雜度
1.最好情況時間複雜度
最理想情況下,執行這段程式碼的時間複雜度,比如再陣列中查詢某個元素,剛好是陣列的第一個元素的情況。
2.最壞情況時間複雜度
最糟糕的情況下,執行這段程式碼的複雜度。假如查詢陣列中某個元素,而這個元素並不存在的情況下
3.平均情況時間複雜度
加權平均時間複雜度
4.平均情況時間複雜度
一種特殊請款下的平均情況時間複雜度
課後思考
分析一下這個add()函式的時間複雜度
// 全域性變數,大小為10的陣列array,長度len,下標i。
int array[] = new int[10];
int len = 10;
int i = 0;
// 往陣列中新增一個元素
void add(int element) {
if (i >= len) { // 陣列空間不夠了
// 重新申請一個2倍大小的陣列空間
int new_array[] = new int[len*2];
// 把原來array陣列中的資料依次copy到new_array
for (int j = 0; j < len; ++j) {
new_array[j] = array[j];
}
// new_array複製給array,array現在大小就是2倍len了
array = new_array;
len = 2 * len;
}
// 將element放到下標為i的位置,下標i加一
array[i] = element;
++i;
}
|
|
|
|
|
|
|
最好O(1) 最壞 O(n) 平均O(1) 期望O(1) 均攤O(1)
相關文章
- 資料結構與演算法——複雜度分析資料結構演算法複雜度
- 《資料結構與演算法之美》學習筆記之複雜度資料結構演算法筆記複雜度
- 《資料結構與演算法之美》複雜度分析(下):淺析最好、最壞、平均、均攤時間複雜度 (讀後感)資料結構演算法時間複雜度
- 資料結構與演算法學習-複雜度分析資料結構演算法複雜度
- 資料結構與演算法分析——開篇以及複雜度分析資料結構演算法複雜度
- JavaScript 資料結構與演算法之美 - 時間和空間複雜度JavaScript資料結構演算法複雜度
- 前端資料結構與演算法細緻分析—上(複雜度分析)前端資料結構演算法複雜度
- 前端資料結構---複雜度分析前端資料結構複雜度
- 資料結構 之 演算法時間複雜度資料結構演算法時間複雜度
- 資料結構與演算法——時間複雜度資料結構演算法時間複雜度
- 資料結構與演算法整理總結---演算法複雜度資料結構演算法複雜度
- 資料結構與演算法-複雜度分享&大 O 演算法資料結構演算法複雜度
- 資料結構與演算法:演算法的時間複雜度資料結構演算法時間複雜度
- 《資料結構與演算法之美》複雜度分析(上):如何分析、統計演算法的執行效率和資源消耗 (讀後感)資料結構演算法複雜度
- 資料結構基礎學習之時間複雜度分析資料結構時間複雜度
- 演算法複雜度分析(下)演算法複雜度
- 資料結構:時間複雜度資料結構時間複雜度
- JavaScript 演算法之複雜度分析JavaScript演算法複雜度
- 資料結構與演算法之美資料結構演算法
- 演算法與資料結構--空間複雜度O(1)遍歷樹演算法資料結構複雜度
- 資料結構與演算法02資料結構演算法
- 資料結構與演算法 java描述 第一章 演算法及其複雜度資料結構演算法Java複雜度
- 資料結構與演算法(一):帶你瞭解時間複雜度和空間複雜度到底是什麼?資料結構演算法時間複雜度
- 演算法複雜度分析演算法複雜度
- python之資料結構與演算法分析Python資料結構演算法
- 02Javascript資料結構與演算法 之 佇列JavaScript資料結構演算法佇列
- 小前端學演算法之複雜度分析前端演算法複雜度
- 紮實打牢資料結構演算法根基,從此不怕演算法面試系列之007 week01 02-07 簡單的複雜度分析資料結構演算法面試複雜度
- 演算法複雜度分析(上)演算法複雜度
- 演算法的複雜度分析演算法複雜度
- 重學資料結構和演算法(一)之複雜度、陣列、連結串列、棧、佇列、圖資料結構演算法複雜度陣列佇列
- 《資料結構與演算法之美》資料結構與演算法學習書單 (讀後感)資料結構演算法
- 資料結構-基本概念和時空複雜度資料結構複雜度
- 演算法與資料結構——雜湊表演算法資料結構
- 演算法分析__時間複雜度演算法時間複雜度
- 資料結構:初識(資料結構、演算法與演算法分析)資料結構演算法
- 04 Javascript資料結構與演算法 之 字典和雜湊表JavaScript資料結構演算法
- 資料結構與演算法整理總結---雜湊演算法資料結構演算法