我寫了一個Java程序,用牛頓法計算用戶自定義數的平方根。該算法中的主要操作是這樣說:實現牛頓法求平方根算法的複雜性
answer = guess - ((guess * guess - inputNumber)/(2 * guess));
while (Math.abs(answer * answer - inputNumber) > leniency) {
guess = answer;
answer = guess - ((guess * guess - inputNumber)/(2 * guess));
}
我現在試圖找到該算法的複雜性(燁它的功課),並從here讀了Newton方法的時間複雜度爲O (log(n)* F(x))。
然而,從上面的代碼片段,我已經解釋的時間複雜度爲:
O(1+ ∑(1 to n) (1)) = O(1+n) = O(n)
不知道什麼我越來越錯在這裏,但我似乎無法理解大的差距Os甚至在閱讀wiki的解釋之後。
此外,我假設「算法的複雜性」與「時間複雜度」是同義的。這樣做是對的嗎?
對於解釋這個悖論,我真的很感謝,因爲我是一個有一些「觸摸和去」編程模塊值得背景的新手。
感謝提前:)
對於數量越來越大,在「寬大」範圍內接近答案所需的迭代次數增加,但非線性增加。 – Wug
@Wug謝謝你的見解。我假設寬鬆迭代的複雜性是log(寬鬆),就像jpalecek的回答一樣?如果我錯了,請糾正我。儘管如此,我仍然不太清楚O(log(n)* F(x))背後的概念。任何人都可以啓發我關於'大圖片'和F(x)?對不起,我有點慢,但我真的很想明白。在此先感謝 – levicorpus