演算法時間複雜度 演算法第一步之時間複雜度

2021-10-12 09:43:24 字數 1636 閱讀 9321

演算法的效率主要取決於時間複雜度和空間複雜度,我們一步一步來搞懂演算法時間複雜度。

在電腦科學中,演算法的時間複雜度(time complexity)是乙個函式,它定性描述該演算法的執行時間。這是乙個代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,亦即考察輸入值大小趨近無窮時的情況。——維基百科
有點沒搞懂?我們來用c++簡單舉例來說明。

includeusing namespace std;

int main()

{ int n = 10;

for (int k = 0; k < n; k++) {

cout

int k = 0k < nk++cout前面已經講了,時間複雜度是描述程式執行時間的,那我們就約定賦值語句int n = 10每執行一次消耗的時間為1個單位時間。由於判斷語句n < k總共要進行n+1次,所以消耗時間為n+1。同理可以得出:

在程式執行完後,總時間t = 3*n+3

演算法的時間複雜度(time complexity)是乙個函式,它定性描述該演算法的執行時間。這是乙個代表演算法輸入值的字串的長度的函式。——維基百科
由於t = 3*n+3,所以t(n)可以看作是關於n的乙個函式。n可以認為是輸入的字元數量,即自變數。

時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。使用這種方式時,時間複雜度可被稱為是漸近的,亦即考察輸入值大小趨近無窮時的情況。——維基百科
但大多數程式的演算法可沒有那麼簡單,所以就要對函式進行簡化。,這裡涉及到一點極限思想。當輸入值(可認為是輸入的字元數量)是無窮的時候,我們只需要定性的描述,不考慮函式的較低階項和最高項係數,所以函式就變為t(n)=n。我們用大o來表示這種關係,即o(n)

時間複雜度可以用函式 t(n) 的自然特性加以分類,比如有著t(n) = o(n)的演算法被稱作「線性時間演算法」

複雜度比較: o(1) < o(logn) < o(n) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!)

暫未更新...
文章首發於 演算法(1)之時間複雜度

本文參考了 維基百科-時間複雜度

演算法之時間複雜度

前言 學習這東西,很枯燥也很煩,參考許多博文,選了許多。結合一些東西,記錄一下,也是為了以後回顧學習。演算法效率 說到演算法效率 不得不提兩個指標,那就是 時間複雜度 空間複雜度 好的演算法應該具備時間效率高和儲存量低的特點。計算機能快速完成大量複雜的資料處理,但是要完成這個工作,計算機也是需要一定...

演算法分析之 時間複雜度

當電腦執行下面這段 的時候,執行任何一條語句都需要花費時間 為了方便討論,這裡我們把每一條語句的執行時間都看做是一樣的,記為乙個時間單元 這個程式有這麼幾個地方消耗了時間 藍色框的兩條語句,花費2個時間單元 黑色框的一條語句,花費n 1個時間單元 紅色框的兩條語句,花費2 n個時間單元 那麼一共花費...

演算法之 時間複雜度和空間複雜度

平時用的少,經常忘記,這裡記錄下時間複雜度的概念 複雜度是演算法的一種標記方法。用o表示,通常讀為big o o的包含了時間複雜和空間複雜度 這裡就只說時間複雜度。時間複雜度的概念,個人總結,可能不太準確。時間複雜度,即標記乙個問題,隨著問題規模的變化,所需要花費時間的關係。時間複雜度就是問題規模和...