時間複雜度的計算

2021-08-15 15:38:48 字數 701 閱讀 8590

首先關於上圖的時間複雜度的計算:

時間複雜度主要計算關鍵語句的執行次數。第一層迴圈明顯執行n+1次,第二三層迴圈的執行次數和第一層迴圈中每次的值相關,不是乙個常數。

直接數次數估計:

第一層的n+1次中,當i=0時,j、k只能取值0,次數為1

當i=1時,j=0,k=0,次數為1

或者 j=1,k=0,次數為1

或者k=1,次數為1

總次數1+2

當i=n時,總次數1+2+3+...+n

所以總次數:1+(1+2)*2/2+...+(1+n)*n/2

所以是o(n^3)    

void insert_sort(int a,int len)

a[j]=tmp;}}

}這裡雖然是三層for迴圈巢狀的結構,但是,第二層迴圈中,只執行了一次,所以從時間複雜度上分析,依然是只看第一層和第三層的語句執**況,所以複雜度依舊是o(n^2)。

上面這個函式可以改為

void insert_sort(int a,int len)

int tmp=a[i];

for(int k=i-1;k>=j;k--)

a[j]=tmp;

}可以看出二者的演算法思想是一樣的,所以複雜度同為o(n)

時間複雜度計算

定義 如果乙個問題的規模是n,解這一問題的某一演算法所需要的時間為t n 它是n的某一函式 t n 稱為這一演算法的 時間複雜性 當輸入量n逐漸加大時,時間複雜性的極限情形稱為演算法的 漸近時間複雜性 我們常用大o表示法表示時間複雜性,注意它是某乙個演算法的時間複雜性。大o表示只是說有上界,由定義如...

時間複雜度計算

1,演算法複雜度是在 資料結構 這門課程的第一章裡出現的,因為它稍微涉及到一些數學問題,所以很多同學感覺很難,加上這個概念也不是那麼具體,更讓許多同學複習起來無從下手,下面我們就這個問題給各位考生進行分析。首先了解一下幾個概念。乙個是時間複雜度,乙個是漸近時間複雜度。前者是某個演算法的時間耗費,它是...

計算時間複雜度

求解演算法的時間複雜度的具體步驟是 找出演算法中的基本語句 演算法中執行次數最多的那條語句就是基本語句,通常是最內層迴圈的迴圈體。計算基本語句的執行次數的數量級 只需計算基本語句執行次數的數量級,這就意味著只要保證基本語句執行次數的函式中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的係數。這樣能...