求Stooge算法分析

sandsboy 2004-03-20 01:38:46
StoogeSort(A,i,j)
{
if(A[i]>A[j]) Swap(A[i]>A[j]);
if(i+1>=j) return;
k=(j-i+1)/3;
StoogeSort(A,i,j-k);
StoogeSort(A,i+k,j);
StoogeSort(A,i,j-k);
return;
}

算法在什么情况下达到最坏情形,其时间复杂度是多少?
请给出具体分析步骤。
...全文
30 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandsboy 2004-03-21
  • 打赏
  • 举报
回复
是Swap(A[i],A[j]);
sandsboy 2004-03-21
  • 打赏
  • 举报
回复
知道了,谢了
sandsboy 2004-03-21
  • 打赏
  • 举报
回复
为什么是n*2/3能否说清一些
gnefuil 2004-03-21
  • 打赏
  • 举报
回复
设f(n)为当j-i+1=n时,StoogeSort所需要的时间
因此可以得到递归方程:
f(n)=3f(n*2/3)+g(n)
其中g(n)为其他运算所需要的时间,在这里O(g(n))=O(1),因为只有两次比较、一次交换、一次赋值操作
根据主方法可得O(f(n))=n^log(3/2,3)
sandsboy 2004-03-20
  • 打赏
  • 举报
回复
急,在线等。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧