首先,需要解釋一下經常看到的o(log n) 是什麼意思。
大概總結為普通應用都是10,計算機學科是2,程式語言裡面是e。
在我們初中最初接觸到對數時,學到的log指以10為底的對數,為了簡化把下標10去掉,記為log。 以常數e為底的對數,簡化下標記為ln。
但是在計算機學科裡,不知道為什麼流傳下來的log為以2為底的對數,但是有的地方比較嚴謹,還是把下標2給加上了。
注意,在我們實際的程式語言裡又不一樣了
程式語言裡log代表的恰恰就是我們數學中學到的ln。 不知道具體什麼原因流傳下來的而且我也不想知道。。。。。
好了,下面進入正題。
最簡單的理解方法為我們小時候經常玩的數數字遊戲,從1到100有一百個數字。
1、從1數到100,時間複雜度即為o(n)。
2、從100開始數,每次把數字減半,大概100、50、25、12、6、3、1,那麼時間複雜度為o(logn)(以2為底n的對數)。
3、數了1之後在從1數到100,數到2然後從1數到100 .。。。 直到數到100之後再從1數到100。 那麼時間複雜度為o(n^2) o n的平方。
乙個演算法在執行過程中臨時占用儲存空間大小的量度。
附各排序演算法空間複雜度和時間複雜度統計
演算法複雜度 時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...
演算法複雜度 時間複雜度和空間複雜度
演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...
演算法複雜度 時間複雜度和空間複雜度
演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...