漸近複雜性(這是什麼大O使用),不依賴於持續性因素,更具體地說,您可以向該函數添加/刪除任何常數因子,並且它將保持等效(即O(2n)= O(n))。
假設if語句需要一段時間,它只會爲複雜性添加一個常數因子。
A「的時間常數量」是指:
- 採取,如果語句對於給定的元件的時間不依賴於有多少其它元件有陣列中
- 所以基本上,如果它不會調用一個函數,以某種方式或類似的方式查看數組中的其他元素
- 任何非函數調用if語句可能都沒問題(除非它包含通過數組的語句,某些語言允許)
因此,爲每個元素調用的2(常量時間)if語句將是O(2n),但是這等於O(n)(好吧,它可能不是真正的2n,注意)。
有關更多詳細信息和更正式的定義,請參見Wikipedia。
備註:除了不依賴於常數因子,它也不依賴漸近較小的項(無論n有多大都保持較小的項),例如, O(n)= O(n + sqrt(n))。而大O只是一個上界,所以說這是O(n )也是正確的(儘管說在考試/考試中可能會得到0分)。
附加說明:問題時不忽視持續性因素是 - 什麼是工作單位劃分?這裏沒有標準的定義。一種方法是使用時間最長的操作,但是確定這可能並不總是直截了當,也不總是特別準確,也不能一般比較不同算法的複雜性。
非常感謝。我沒有理解複雜性和時間之間的關係。 –
偉大的聯繫,我以爲我知道大O之前,現在我真的知道它! –