演算法漸進複雜度,怎麼證明logn!= θ(nlogn)?
01-05
根據斯特林公式
閑來無事,隨手放縮一下(對於足夠大的):
雖然17年了,我也回答下吧,是我們演算法課的作業題。
n!=n(n-1)...1則有n!&<=nn...n=n**n
將n!的前一半拋去,即為n/2 ...n,再均取值為n/2,則n!必定大於n/2個n/2的乘積,則
(n/2)**(n/2)&< n! &< n ** n,兩邊同時取lg即可得證豪爽地放一下,n階乘小於等於n的n次方,大於等於n的二分之n次方,後面怎麼辦就很明顯了吧 。前面的同學連斯特林和積分都出來了,證明這種東西不用太精確。
推薦閱讀:
※這個號稱「微軟的面試題」,該如何解答?
※如何對1TB的數組進行排序?
※如何清晰的理解演算法中的時間複雜度?
※如何將一個[10^3,10^15]上的整數儘可能多地表示成n個互不相同的因數乘積?
※有隨著n規模增大,所用時間反而減小的演算法么?
TAG:演算法設計 |