一個用來思考,這個演算法能否快狠準計算完成的好工具,有別於剛開始學程式的人,先能做出程式來用,就能歡天喜地,開心好幾天,知曉Big O之後,世界就不再那麼單純了,而那純粹的快樂也漸漸離我們遠去... ...,就好像離開童年的單純歲月一樣,你,如果可以,還會想要回到小時候嗎? 當然,不要。大人有選擇生活的能力,小孩才沒有。
時間複雜度是個粗估運作時間的好方法,為甚麼說粗估呢?
100n^3+2n+2
我們會說,該公式的時間複雜度是O(n^3)
99999999999n+1
我們會說,該公式的時間複雜度是O(n)
藉由時間複雜度,我們能忽略電腦計算性能、記憶體配置大小等問題,就純粹從演算法公式來估算、比較花費時間,當輸入數字變的龐大時,在同單位時間數下,時間複雜度顯現的影響就更加震撼。
圖片來源自維基百科
舉我從Day9~Day10之間的公式,兩者都是找出最大相乘數,然而一個會造成time limit exceed,一個卻依然能快速算出正確數值,這就歸功於從時間複雜度角度的思考,若使用雙迴圈,會造成時間複雜度為O(n^2),若只使用單迴圈,就是O(n)。很明顯的,O(n)所花費的時間較少,我們就談到這。