概念:
在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。演算法的時間複雜度,也就是演算法的時間量度,記作:t(n) = o(f(n))。它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸近時間複雜度,簡稱為時間複雜度。其中f(n)是問題規模n的某個函式。
如:一重迴圈:o(n);
一重迴圈:o(n^2);
二分:o(log n);
注意:
1.計算複雜度的時候,只統計執行次數最多的(n足夠大)那種固定操作的次數。比如某個演算法需要執行加法n2次,除法n次,那麼就記其複雜度是(n2);
2.複雜度有「平均複雜度」和」最壞複雜度「兩種。兩者可能一致,也可能不一致;
3.如果複雜度是多個n的函式之和,則只關心隨n增長增長得最快的那個函式
o(n^3+ n^2) =>o(n^3)
o(2^n+ n^3) =>o(2^n)
o(n!+3^n) =>o(n!)
常數複雜度 :o(1)
對數複雜度 :o(log(n))
線性複雜度 :o(n)
多項式複雜度 :o(n^k)
指數複雜度 :o(a^n)
階乘複雜度 :o(n!)
插入排序、選擇排序、氣泡排序 o(n^2)
快速排序 o(n*log(n))
二分查詢 o(log(n))
概念:
空間複雜度(space complexity)是對乙個演算法在執行過程中臨時占用儲存空間大小的量度,記做s(n)=o(f(n))。
比如直接插入排序o(1)
一維陣列: o(n)
二維陣列: o(n^2)
時間複雜度 空間複雜度
時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...
時間複雜度 空間複雜度
演算法複雜度分為時間複雜度和空間複雜度。其作用 時間複雜度是指執行演算法所需要的計算工作量 而空間複雜度是指執行這個演算法所需要的記憶體空間。一 時間複雜度 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道...
時間複雜度 空間複雜度
一 時間複雜度 實際是指程式執行次數,而不是程式執行時間 1.我們一般討論的是最壞時間複雜度,這樣做的原因是 最壞情況下的時間複雜度是演算法在任何輸入例項上執行時間的上限,以最壞代表最全。2.時間複雜度的書寫規則 忽略常數項,用o 1 表示 選取最壞時間複雜度即選取增長最快的項 遞迴的時間複雜度 遞...