複雜度問題

2021-07-10 12:57:53 字數 1191 閱讀 1384

資料結構中複雜度問題

複雜度問題想必是很多人最頭疼的問題,下面就對其進行一些總結

複雜度分為:時間複雜度與空間複雜度

空間複雜度:演算法執行時,占用多少記憶體,包括指令空間、資料空間和環境棧空間;

時間複雜度:執行程式所使用的時間量級,包括編譯時間和執行時間。

評價乙個演算法的好壞,一般兩種複雜度呈現線性增長是最好的。

常見的時間複雜度:

常數階:o(1)

對數階:o(log2n)

線性階:o(n)

線性對數階:o(nlog2n)

平方階,立方階:o(n^2),o(n^3)

k次方階:o(n^k)

指數階:o(2^n)

時間複雜度的計算方法:

1.去掉執行時間中的所有加法常數。

2.只保留最高端項。 

3.如果最高端項存在且不是1,去掉與這個最高端相乘的常數得到時間複雜度

舉個簡單的例子:

int a=0

for(int i=1;ia++;

該例子中共執行了n-1次,去掉加法常數-1(因為n取較大時,常數對時間複雜度影響較小),進而可得知時間複雜度為n,用o(n)表示

再舉例,若乙個程式的複雜度為n^2/2+3顯然先去掉常數項3,再保留最高項n^2/2,去掉最高項想成的常數1/2就可得時間複雜度o(n^2)

呀吼,是不是很簡單,豁然開朗的趕腳。

下面給出一些經典演算法複雜度的總結:

排序法最差時間分析

平均時間複雜度

空間複雜度

氣泡排序

o(n2

)o(n2

)o(1)

快速排序

o(n2

)o(n*log2

n)o(log2

n)~o(n)

選擇排序

o(n2

)o(n2

)o(1)

二叉樹排序

o(n2

)o(n*log2

n)o(n)

插入排序

o(n2

)o(n2

)o(1)

堆排序o(n*log2

n)o(n*log2

n)o(1)

希爾排序oo

o(1)

最後希望可以幫到大家~

複雜度分析 時間複雜度 空間複雜度

執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...

問題 A 複雜度分析

一 任務描述 有如下 段 n為正整數 i 1 while i 1 while j 1 while k printf n 問printf語句共執行了幾次?這段 執行完以後i j k值為多少?粗略分析可知,3層迴圈時間複雜度大概在n 2 n 3之間 設為 式 最開始著手解決,按照經驗應該去打表人工找規律...

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

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...