ps: 今天週日鞏固一下所學的資料結構篇章
1. 如何衡量乙個演算法的好壞?
時間複雜度&空間複雜度(這個是次要的)
2. 什麼是時間複雜度?
演算法中的基本操作的執行次數
3. 時間複雜度為什麼不使用時間來衡量而使用基本語句的執行次數來衡量?
因為一般和時間成正比
4. 時間複雜度的o漸進表示法
用1表示所有加法常數
在算出的執行次數中只保留最高項, 刪除其他項
5. 時間複雜度的:最優、平均、最差情況,為什麼時間複雜度看的是最差情況?
最大, 最小執行次數;
6. 如何求解:二分查詢、遞迴求階乘、遞迴斐波那契的時間複雜度?
二分: o(logn)
遞迴: o(n)
斐波那契額: o(2^n)
7. 什麼是空間複雜度?
占用多少臨時儲存空間;
8. 如何求空間複雜度? 普通函式&遞迴函式
開闢了多少次空間, 多少深度;
9. 分析遞迴斐波那契數列的:時間、空間複雜度,並對其進行優化,偽遞迴優化—>迴圈優化
斐波那契函式:
long long fibonacci(size_t n)
時間複雜度o(2^n) 空間複雜度o(n)
優化:long long fibonacci(long long first, long long second, int n)
if(n == 3)
return fibonacci(second, first+second, n - 1);
}10. 常見時間複雜度
二分查詢: o(logn)
遞迴函式(二叉樹, 數**): o(n)
斐波那契函式(生兔子,下面之和): o(2^n)
氣泡排序: o(n^2)
資料結構 時間複雜度 空間複雜度
1.演算法效率 演算法效率可以用來衡量乙個演算法的好壞 演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率.時間效率被稱為時間複雜度,空間效率被稱為空間複雜度.時間複雜度主要衡量的是乙個演算法的執行速度,而空間複雜度主要衡量乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小...
資料結構時間複雜度和空間複雜度
1 演算法o n 關注n的階數,當數十分大的時候,常數可以忽略。o n 又稱為大o記法。2 t n o f n 隨著n變化而變化,f n 是某個函式,執行的次數等於時間,一般情況下,t n 增長最慢的演算法最優。4 推到o n 1,用1取代時間中所有加法常數 哪些可以忽略 2,在修改後的執行函式中,...
資料結構 時間複雜度和空間複雜度
通常我們衡量乙個演算法的複雜度時,會有兩種演算法效率分析方式 第一種是時間效率,第二種是空間效率。時間效率被稱為時間複雜度,而空間效率被稱作空間複雜度。時間複雜度主要衡量的是乙個演算法的執行速度,空間複雜度主要衡量一乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小。所以對空間複雜...