微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查找递归算法的运行时间

如何解决查找递归算法的运行时间

我正在尝试为该算法查找运行时(用于查找数组中的第 k 个最小值):

Select(A[1 . . . n],k) if n ≤ 100 then
  Return the k-th smallest element via brute-force; else
  Divide A into m ← ⌈n/3⌉ consecutive subgroups of size at most 3; 
  for i ← 1 . . . m do
    M[i] ← Median of the i-th subgroup;
  end
  p ← Select(M[1...m],⌊m/2⌋);
  Let B be an array contains all the elements < p in A;
  Let C be an array contains all the elements ≥ p in A;
  if len(B) ≥ k then
    return Select(B,k);
  else
    return Select(C,k − len(B));
  end
end

为了找到运行时,我试图提出一个递归关系。这就是我认为的:

由于算法对数组的 n/3 个元素进行递归调用,我预计它是 2T(n/3) + O(n)。然后应用大师定理。我的方向是否正确?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。