一、常見的七種時間複雜度:大o表示法–big o notation
o(1):常數複雜度 constant complexity
o(log n):對數複雜度 logarithmic complexity
o(n): 線性時間複雜度 linear complexity
o(n^2): n平方 n square complexity
o(n^3): n立方 n cubic complexity
o(2^n):指數 exponential growth
o(n!): 階乘 factorial
二、任何乙個分治或者遞迴的函式都可以通過這四種方式算出它的時間複雜度:
二叉樹遍歷-前序,中序,後序:時間複雜度是多少?——o(n)
原因:o(n),n 代表二叉樹中的節點數。在二叉樹中無論是前序,中序還是後序,遍歷二叉樹的時候,每個節點會訪問一次且僅訪問一次,
所以它的時間複雜度是線性與二叉樹的節點總數,即o(n)
圖的遍歷,時間複雜度是多少?——o(n)
原因:和二叉樹同理,圖中的每個節點在遍歷過程中會訪問一次且僅訪問一次,所以是o(n)
搜尋演算法,dfs(深度優先),bfs(廣度優先)時間複雜度是多少?——o(n)
原因:訪問的節點也只訪問一次,所以是o(n),n指的是搜尋空間裡的節點總數。
二分查詢,時間複雜度是多少?——o(log n)
一、計算空間複雜度的兩條原則:
1、陣列長度
如果**裡使用了陣列,基本上陣列的長度就是你的空間複雜度。
例如:有乙個一維陣列,陣列元素個數為n ,那空間複雜度為o(n)。如果是二維陣列,陣列的長度為 n 的平方,那空間複雜度就是 n 平方。
2、 遞迴的深度(特殊說明)
如果有遞迴,一般情況下遞迴的深度就是空間複雜度的最大值。
注意:如果**中既使用了陣列又用到了遞迴,那二者之間的最大值就是你的空間複雜度。
穩定性的概念:
假定待排序的記錄序列中,存在多個具有相同關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,稱這種排序演算法是穩定的,否則稱為不穩定的。
穩定的排序演算法:
1. 氣泡排序
2. 插入排序
3. 歸併排序
4. 計數排序
5. 基數排序
6. 桶排序
不穩定的排序演算法:
1. 選擇排序
2. 快速排序
3. 希爾排序
4. 堆排序
排序演算法 時間複雜度和空間複雜度
常數階o 1 無論 執行了多少行,只要沒有迴圈複雜結構,那麼這個的時間複雜度就是o 1 o 1 時間複雜度 沒有迴圈結構的順序執行,無論執行多少行,時間複雜度均為o 1 public static voido1 對數階o log2n o log2n 時間複雜度 此處 i 以二倍的速度增長,也就是說到...
排序演算法的 時間複雜度 和 空間複雜度
常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2n 不穩定 o log2n o n 選擇排序 o n2 o n2 穩定 o 1 二叉樹排序 o n2 o n log2n...
排序演算法時間複雜度和空間複雜度比較
n 2表示n的平方,選擇排序有時叫做直接選擇排序或簡單選擇排序 排序方法平均時間最好時間最壞時間 桶排序 不穩定 o n o n o n 基數排序 穩定 o n o n o n 歸併排序 穩定 o nlogn o nlogn o nlogn 快速排序 不穩定 o nlogn o nlogn o n ...