1. 時間頻度
乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。
2. 演算法的時間複雜度
案例:如果乙個**要對它的使用者發放優惠券,那我們就需要先找到這些使用者。我們用乙個長度為 n 的陣列代表某個**的使用者列表。我們假設第乙個註冊使用者 id 是 1,第二個註冊使用者的 id 是 2,以此類推,最近剛剛註冊的使用者 id 為 n。
如果**的發放策略是傾向於獎勵新使用者,那麼被查詢的使用者 id 有很大的概率會非常接近 n,因此平均複雜度就會非常接近 o(n)。相反,如果**的發放策略是傾向於獎勵老使用者,那麼搜尋的使用者 id 有很大的概率是非常接近 1 的,因此平均複雜度會非常接近 o(1)。
(由此可見,不均勻的概率分布,最終會影響平均複雜度的加權平均計算。)
3. 演算法的空間複雜度
是對乙個演算法在執行過程中臨時占用儲存空間大小的量度。s(n)定義為該演算法所耗費的儲存空間,與時間複雜度類似,漸近空間複雜度也常常簡稱為空間複雜度。
演算法時間複雜度空間複雜度
演算法 是解決某一類問題的通法,即一系列清晰無歧義的計算指令。每個演算法只能解決具有特定特徵的一類問題,但乙個問題可由多個演算法解決。乙個演算法應該有以下五個方面的特性 比較演算法的優劣我們從兩個維度去進行考量 時間 空間 時間複雜度,空間複雜度 找出基本語句 演算法中執行次數最多的那條語句就是基本...
演算法 時間複雜度 空間複雜度
1 if i 1 2 a 1 result 3 4 result n 2 result 1000 1000 3 array.push a array.pop 4 map.set 1,1 map.get 1,1 在計算複雜度的時候,o 1 一般會被忽略。1 for let i 0 i n i 2 wh...
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...