我的教練教我們如何計算算法的計算複雜度,但她只這樣做很簡單,不那麼好。更具體地講,可能有人幫我算算下面的計算複雜度:計算算法的效率和複雜性
While (PLength > 0)
chartest = sHex(i)
ascvalue = Strings.Asc(chartest)
decvalue = Convert.ToDecimal(ascvalue)
shiftdecvalue = decvalue + 1
asc = ChrW(shiftdecvalue)
emptychararray(i) = asc
i = i + 1
PLength = PLength - 1
End While
他們的方式我已經想過這個問題,它只是出來是T(N)= C_1 * N + C_2 *(N -1)+ C_3 *(N-1)+ C_4 *(N-1)+ C_5 *(N-1)+ C_6 *(N-1)+ C_7 *(N-1)+ C_8 *(n-1個)+ C_9 *(N-1)+ C_10 *(N-1)
但我覺得我可能是過於簡單化了。此外,我如何獲得這個大O符號?我一直在網上尋找關於如何教我自己的資源,所以如果你有任何建議,那些將不勝感激。先謝謝你。
你從哪裏得到這麼多條款?你應該把它寫成T(n)=某些包含T(n-c)或T(n/c)的東西。看看其他一些復發關係的例子,你應該做的事情應該變得清楚。同樣,您應該能夠找到大量將重現關係轉換爲大O符號的示例。此外,您需要告訴我們'sHex','Strings.Asc','Convert.ToDecimal'和'ChrW'與'i'有關的複雜性。 – Dukeling
我的教授教授它的方式是,完成某些操作的每行代碼都被賦予一個常量,然後乘以執行操作的次數。所以我在我的例子中想的是每一行都是完整的n-1次(因爲n取決於執行while循環的次數)。你詢問的項目的複雜性被認爲是一步操作(所以我認爲它們的順序是n)。 – user2016082