1
剛開始的數據結構。被困在這一個:時間複雜度練習(僞代碼)
我有內部while和for循環的麻煩,因爲它的變化,如果數值N是奇數還是偶數。
我最好的情況下,將是 - 內部的循環運行LOGN(基數爲2)次, 而while循環 - LOGN倍(基數爲2)
很想一些幫助。
剛開始的數據結構。被困在這一個:時間複雜度練習(僞代碼)
我有內部while和for循環的麻煩,因爲它的變化,如果數值N是奇數還是偶數。
我最好的情況下,將是 - 內部的循環運行LOGN(基數爲2)次, 而while循環 - LOGN倍(基數爲2)
很想一些幫助。
專注於調用do_something()
多少次。
外for
環清楚運行n
倍,while
循環內它是獨立可變的i
。因此do_something()
被稱爲n
倍於在while
循環中調用的總次數。
在第一次通過while
循環時,do_something()
被調用一次。在第二時間,它被稱爲兩次,第三次的叫法,4倍等
的時候,它被稱作總數因此是
1 + 2 + 4 + 8 + ... + 2^(k-1)
其中k
是最大的,使得2^(k-1) <= n
。有上述總和的標準公式。使用它,然後根據n
解決k
,並將結果乘以外循環中的n
,然後完成。
您正試圖給出一個大O,而不是確切的操作次數。即使對奇數也不重要。無論如何,如果您需要幫助完成作業,您應該包含您嘗試的解決方案。 –
嗯,我加了我最好的猜測。我只需要一些指導。 – sheldonzy
您是否介紹瞭如何評估總和'1 + 2 + 2^2 + 2^3 + ... + 2 ^(k-1)'? –