回覆列表
-
1 # 嘻嘻哈哈真的好
-
2 # 使用者5635123734932
O(1): 表示演算法的執行時間為常量
O(n): 表示該演算法是線性演算法
O(㏒2n): 二分查詢演算法
O(n2): 對陣列進行排序的各種簡單演算法,例如直接插入排序的演算法。
O(n3): 做兩個n階矩陣的乘法運算
O(2n): 求具有n個元素集合的所有子集的演算法
O(n!): 求具有N個元素的全排列的演算法
O(n?表示當n很大的時候,複雜度約等於Cn玻珻是某個常數,簡單說就是當n足夠大的時候,n的線性增長,複雜度將沿平方增長。
一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為T(n)。
一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用T(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,T(n)/f(n)的極限值為不等於零的常數,則稱f(n)是T(n)的同數量級函式。記作T(n)=O(f(n)),稱O(f(n))
為演算法的漸進時間複雜度,簡稱時間複雜度。
O(1): 表示演算法的執行時間為常量O(n): 表示該演算法是線性演算法O(㏒2n): 二分查詢演算法O(n2): 對陣列進行排序的各種簡單演算法,例如直接插入排序的演算法。O(n3): 做兩個n階矩陣的乘法運算O(2n): 求具有n個元素集合的所有子集的演算法O(n!): 求具有N個元素的全排列的演算法O(n²)表示當n很大的時候,複雜度約等於Cn²,C是某個常數,簡單說就是當n足夠大的時候,n的線性增長,複雜度將沿平方增長。一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為T(n)。 一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用T(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,T(n)/f(n)的極限值為不等於零的常數,則稱f(n)是T(n)的同數量級函式。記作T(n)=O(f(n)),稱O(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。