我试图找到Big O进行stooge排序.来自维基百科
algorithm stoogesort(array L, i = 0, j = length(L)-1)
if L[j] < L[i] then
L[i] ? L[j]
if j - i > 1 then
t = (j - i + 1)/3
stoogesort(L, i , j-t)
stoogesort(L, i+t, j )
stoogesort(L, i , j-t)
return L
Run Code Online (Sandbox Code Playgroud)
我在性能分析方面表现不佳......我绘制了递归树

我相信...:
log(n)(2^log(n))n = O(n^2)?2^log2(n) = n,但它2^log3(n)实际上给了什么?那么O(n^2 * log(n)) = O(n^2)呢?它远离维基百科O(n^(log3/log1.5))......
级别k的问题大小为(2/3)k n.最低级别的大小为1,因此设置(2/3)k n = 1,深度为k = log 1.5 n(将两边除以(2/3)k,取记录基数1.5).
级别k的调用次数为3 k.在级别k = log 1.5 n,这是3 log 1.5 n =((1.5)log 1.5 3)log 1.5 n =((1.5)log 1.5 n)log 1.5 3 = n log 1.5 3 = n log 3/log 1.5.
由于每个级别的工作在几何上增加,叶子上的工作占主导地位.
| 归档时间: |
|
| 查看次数: |
8074 次 |
| 最近记录: |