關於時間複雜度的一些個人理解

2021-10-23 04:16:30 字數 525 閱讀 7521

一、o()的提出

我們需要用乙個量化指標來衡量一段程式執行的時間快慢,但是相同的程式在一台老式電腦和一台伺服器上的執行時間也是截然不同的。

那麼能不能設計乙個指標來直觀的表示相應程式的時間消耗,而不受外界執行環境的影響呢?

基於這個想法,提出了用程式執行的基本運算次數來表徵時間消耗。

(基本運算是指加減乘除之類的,像呼叫函式語句還得分析函式內部的基本運算情況)

二、o()的最終形成

在判斷時間的消耗上,我們沒有那麼細緻的比較要求,你只要告訴我大概的時間消耗就行了。

這就像在學數學的各種函式大小比較時,我們要先根據函式數量級和趨勢來做乙個大概判斷。

比如,x趨於無窮時,x的三次方一定比x的二次方大得多。(即使x三次方前面的係數是0.0001,x二次方的係數是9999)

常見的時間複雜度大小比較如下

另外python一些函式內建操作的時間複雜度可查詢這裡

關於時間複雜度空間複雜度的理解

對於非科班出身的人來說,在學習演算法的時候經常會遇到的問題就是關於對事件空間複雜度的 理解。大 o 表示法 的準確的數學描述方式非常枯燥,我在這裡就不貼出來湊字數了,其實大 o 表示法的意思挺簡單的,就是表示 隨著輸入的值變化,程式執行所需要的時間與輸入值的變化關係。我們先看第乙個 這是乙個函式,輸...

理解時間複雜度

本篇概念皆是關於時間複雜度 首先需要了解乙個概念 乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為 t n 乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多 n 稱為問題的規模,當 n 不斷變化時,時間頻度 t n 也會不斷變化。但有時我們想知道...

關於SpringIOC的一些個人理解

根據上面這個思路接著說的話,那就順理成章了,首先spring容器將所有的bean都放在一起進行管理,然後當某個應喲經程式需要用到某個bean物件的時候,說一下,然後spring自動給這個程式分配他所需要的物件。這就是所謂的控制反轉了吧?本來這個宣告建立bean物件的過程應該由程式自己進行,建立呼叫然...